【问题标题】:Django Rest Framework Nested UrlsDjango Rest 框架嵌套 URL
【发布时间】:2015-12-21 12:54:42
【问题描述】:

模型是

class Article(models.Model):
    title = models.CharField(max_length=30)

class Categories(models.Model):
    article = models.ForeignKey(Article)
    name = models.CharField(max_length=30)

有可能使用drf-extensions,如何使用。

如何设置有类似的 URL

/api/article/92285/categories

它应该能够为 GET、POST 和 PUT 提供响应

从以下格式

{
  "article_id": 92285,
  "views": 0,
  "downloads": 0,
  "shares": 0,
  "handle_url": "",
  "title": "Test dataset",
  "defined_type": "dataset",
  "status": "Drafts",
  "published_date": "",
  "description": "Test description",
  "total_size": 0,
  "owner": {
    "id": 13483,
    "full_name": "John  Carter"
  },
  "authors": [
    {
      "first_name": "John ",
      "last_name": "Carter",
      "id": 13483,
      "full_name": "John Carter"
    }
  ],
  "tags": [

  ],
  "categories": [
  {
    "id": 135,
    "name": "Technology"
  },
  ]


  "files": [

  ]
}

--

【问题讨论】:

    标签: django django-rest-framework drf-nested-routers


    【解决方案1】:

    这是 DRF 中工作原理的概述,但如果您是新手,我建议您阅读 official tutorial。我不能在这里提及所有细节。这是整个教程你要什么:

    serializers.py

    class CategorySerializer(serializers.ModelSerializer):
        class Meta:
            model = Categorie
    
    class ArticleSerializer(serializers.ModelSerializer):
        categories = CategorySerializer(many=True, read_only=true)
    
        class Meta:
            model = Article
    

    views.py

    class ArticleListCreateApiView(generics.ListCreateAPIView):
        model = Article
        queryset = Article.objects.all()
        serializer_class = ArticleSerializer
    
    class ArticleUpdateApiView(generics.UpdateAPIView):
        model = Article
        serializer_class = ArticleSerializer
    
        def get_object(self):
            boby_data = self.request.data
            id = self.kwargs['id']
            # ... data processing
    

    urls.py

    url(r'article/(?P<id>\d+)/categories$', ArticleUpdateApiView.as_view())
    

    【讨论】:

    • 基础 API 正在工作,想设置嵌套 url,如 /api/article/92285/categories
    • 在这种情况下,您应该覆盖您使用的每个类的默认方法实现,就像我对 UpdateAPIView 所做的那样。我更新了代码。
    猜你喜欢
    • 2014-12-31
    • 2013-06-17
    • 1970-01-01
    • 2014-05-21
    • 2021-06-23
    • 2014-09-18
    • 2018-05-17
    • 2018-12-13
    • 2020-11-07
    相关资源
    最近更新 更多