2016-10-05 24 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 

で外部キーを取得するために管理しかし、私は知りませんそのようなURLで外部キーを取得する方法 '' 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には、この値に対応するキーワード引数 を含める必要があります。 unsetの場合は、lookup_fieldと同じ の値を使用します。

lookup_fieldのデフォルト値は'pk'です。したがって、あなたがurlキーワード引数を別のものからpkに変更する場合は、lookup_url_kwargを定義する必要があります。

class CommentLikeList(ListCreateAPIView): 
    lookup_url_kwarg = 'eventnumber' 

すべてDRFクラスのメソッドを検査し、こちらに属性をすることができます http://www.cdrf.co/

関連する問題