【问题标题】:Sending patch request to Django Rest Framework API with Foreign Key使用外键向 Django Rest Framework API 发送补丁请求
【发布时间】:2015-01-21 11:29:05
【问题描述】:

我需要向我只知道外键的 API 发送 put 请求。 这应该怎么做。

models.py

class Company(models.Model):
    name = models.CharField(max_length = 100)
    user = models.OneToOneField(settings.AUTH_USER_MODEL, unique = True)

serializer.py

class CompanySerializer(serializers.ModelSerializer):

   class Meta:
       model = Company
       fields = ('id', 'name','user')

views.py

class Company(object):
    permission_classes = (IsAuthenticated,IsUserThenReadPatch)
    serializer_class = CompanySerializer

    def get_queryset(self):
       user = self.request.user
       return Company.objects.filter(user = user)

class CompanyDetails(Company, RetrieveUpdateAPIView, APIView):

    pass

urls.py

url(r'^company/$',views.CompanyDetails.as_view()),

【问题讨论】:

    标签: python django django-models django-rest-framework


    【解决方案1】:

    为了在 DRF 中启用所有 CRUD 操作,您可能希望使用 ViewSet 而不是 View

    # views.py
    class CompanyViewSet(ViewSet):
        permission_classes = (IsAuthenticated,IsUserThenReadPatch)
        serializer_class = CompanySerializer
    
        def get_queryset(self):
           user = self.request.user
           return Company.objects.filter(user = user)
    
    # urls.py
    router = routers.SimpleRouter()
    router.register(r'company', CompanyViewSet)
    urlpatterns = router.urls
    

    以上将允许您发送所有 CRUD REST 请求:

    • GET /company - 列出所有公司
    • POST /company - 创建公司
    • GET /company/:id - 找一家公司
    • PUT/POST /company/:id - 更新公司
    • PATCH /company/:id - 部分更新公司
    • DELETE /company/:id - 删除公司

    您可以在 DRF 文档中阅读更多信息 - viewsetsrouters

    【讨论】:

      猜你喜欢
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 2020-02-15
      • 2022-01-10
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2018-11-24
      相关资源
      最近更新 更多