2015-01-21 39 views
1

我需要将放置请求发送给我只知道外键的API。 应该怎么做到这一点。使用外键向Django Rest Framework API发送修补程序请求

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()), 

回答

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

相关问题