2013-08-12 6 views
7

django-rest-framework'te bir ModelViewSet'e özel bir URL eklerken sorun yaşıyorum. İşteModelViewSet'te django-rest özel url

router = routers.DefaultRouter() 
router.register(r'post', PostViewSet) 

urlpatterns = patterns('', 
    url(r'^api/', include(router.urls)), 
) 

Benim modelviewset bir dizi gün almak için arıyorum

/api/post/ 

gibi bir url için çok çalışır

class PostViewSet(viewsets.ModelViewSet): 
    """ 
    API endpoint that allows users to be viewed or edited. 
    """ 
    queryset = Post.objects.all() 
    serializer_class = PostSerializer 
    permission_classes = (permissions.IsAuthenticatedOrReadOnly, IsOwnerOrReadOnly,) 
    search_fields = ('created') 

    def pre_save(self, obj): 
     obj.user = self.request.user 


    # 
    # based on the post type this will decide which serializer to use for the data 
    def get_serializer_class(self): 
     # 
     # default is the Text role serializer 
     return PostSerializer 

benziyor benim ana urls.py bir örnek ya da yapmalı mıyım?

post_list = PostViewSet.as_view({'get': 'list'}) 

Sonra her zaman yaptığınız gibi, sizin tarih tabanlı arama URL'ye bu harita yıl, ay parametreleri ayarlayarak ve: sadece ayrı görünüm olarak liste yöntemini çekin

/api/post/?year=&month=&day= 

cevap

10

gibi bir şey kullanmak gün.

get_queryset'da bu kwargs'ların ayarlanıp ayarlanmadığını kontrol edebilirsiniz, eğer öyleyse, queryset'i filtreleyin.

+0

Bu cevap bana yardımcı oldu! Yayınladığınızdan bu yana bir süredir biliyorum, ancak tarayıcının bu ayrı ayrı (bu doğru kelime mi?) Görünümlerini yönlendiriciyle görüntülemenin mümkün olup olmadığına dair herhangi bir fikriniz var mı? – dkhaupt

+0

@dkhaupt Yönlendirmeye göre ekstra eylemleri şu şekilde işaretleyebilirsiniz: http://www.django-rest-framework.org/api-guide/viewsets/#marking-extra-actions-for-routing - Emin değilim size ihtiyacınız olanı verir. Sonuçta, göz atılabilir API için şablonu geçersiz kılmanız ve ihtiyacınız olan bağlantıyı eklemeniz gerekebilir. (Görünümün kendisi diğerleriyle olduğu gibi işlenebilir.) –