2016-10-05 117 views
1

外鍵如何有可能得到與Django REST框架在url中分配的外鍵?Django REST框架與外鍵generics.ListCreateAPIView

class CommentList(generics.ListCreateAPIView): 
    serializer_class = CommentSerializer 
    pagination_class = StandardResultsSetPagination 
    queryset = Comment.objects.all() 
    def get(self, *args, **kwargs): 
     serializer = CommentSerializer(comment, many=True) 
     return super(CommentList, self).get(*args, **kwargs) 

我的目標就是用這個URL(urls.py):

url(r'^event/(?P<pk>[0-9]+)/comments', views.CommentList.as_view()) 

不知怎的,我設法外鍵用這種方式

class CommentLikeList(APIView): 
    def get(self, request, *args, **kwargs): 
     key = self.kwargs['pk'] 
     commentLikes = CommentLike.objects.filter(pk=key) 
     serializer = CommentLikeSerializer(commentLikes, many=True) 
     return Response(serializer.data) 
    def post(self): 
     pass 

但我不知道如何使用 ''generics.ListCreateAPIView''

http://127.0.0.1:8000/event/<eventnumber>/comments 

回答

1

如果你想得到pk。您可以使用ListCreateAPIView類中的lookup_url_kwarg屬性。

class CommentLikeList(ListCreateAPIView): 

    def get(self, request, *args, **kwargs): 
     key = self.kwargs[self.lookup_url_kwarg] 
     commentLikes = CommentLike.objects.filter(pk=key) 
     serializer = CommentLikeSerializer(commentLikes, many=True) 
     return Response(serializer.data) 

lookup_url_kwarg - 應該用於 對象查找的URL關鍵字參數。 URL conf應包含與此值對應的關鍵字參數 。如果未設置,則默認使用與lookup_field相同的 值。

lookup_field屬性的默認值是'pk'。因此,如果您將url關鍵字argumento從另一個不同的pk更改爲pk,則應該定義lookup_url_kwarg

class CommentLikeList(ListCreateAPIView): 
    lookup_url_kwarg = 'eventnumber' 

您可以檢查所有DRF類的方法和屬性在這裏過: http://www.cdrf.co/

相關問題