2015-01-21 59 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