2014-11-20 5 views
0

Django Rest Framework에서 ID로 객체를 가질 수 없습니다. 나는이를 내 views.py에서Django Rest Framework에서 해당 ID로 객체를 찾는 방법

class BlogPostSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = BlogPost 
     fields = ('title', 'content', 'created') 

:

class BlogPost(models.Model): 
    title = models.CharField(max_length=128)  
    content = models.TextField()  
    created = models.DateTimeField(auto_now_add=True) 

그런 다음 나는 시리얼을 쓰기 : 나는 그런 모델이

: 내 URL을에

class BlogPostListFilter(dajngo_filter.FilterSet): 
    blog_post_id = django_filters.NumerFilter(name = 'id') 

    class Meta: 
      model = BlogPost 
      fiields = ['blog_post_id'] 


class BlogPostList(generics.ListCreateAPIView): 
    queryset = BlogPost.objects.all() 
    serializer_class = BlogPostSerializer 
    permission_classes = (AllowAny,) 
    filter_class = BlogPostListFilter 
    paginate_by = 100 

그리고 이러한 코드

url(r'^blogpost/$', ListCreateAPIView.as_view(model=BlogPost), name='blogpost-list'), 

하지만 브라우저에 쓸 때 http://example.com/blogpost/?blog_post_id=1 모든 개체가 있습니다

답변

2

정말로 ListCreateAPIView을 사용하고 싶다면.

urls.py : 당신은 일부 변경해야

url(r'^blogpost/(?P<post_id>\w+)$', views.BlogPostList.as_view(),name='blogpost-list'), 

views.py

class BlogPostList(generics.ListCreateAPIView): 
    serializer_class = BlogPostSerializer 
    permission_classes = (AllowAny,) 
    filter_class = BlogPostListFilter 
    paginate_by = 100 

    def get_queryset(self): 
     queryset = BlogPost.objects.filter(pk=self.kwargs['post_id']) 
     return queryset 

을하지만 장고 나머지 프레임 워크에 더 클래스 기반 뷰를 제공한다는 생각하여 사용 사례 (예 : RetrieveAPIView) 내가 아는 한, 당신은 단지 객체를 얻고 자하는 것처럼 보입니다. 그리고이 일반적인 뷰는 객체들의리스트를위한 것입니다.

관련 문제