我正在構建一個公開REST API的Django應用程序,用戶可以通過它來查詢我的應用程序的模型。我按照指示here如何獲取Django視圖集中的API參數?
我的路線是這樣的mySites url.py:
router.register(r'myObjects', views.MyObjectsViewSet)
....
url(r'^api/', include(router.urls)),
我的串行看起來是這樣的:
class MyObjectSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = MyObject
fields = ('id', 'name',)
我的視圖集中看起來是這樣的:
class MyObjectsViewSet(viewsets.ModelViewSet):
queryset = MyObjects.objects.all()
serializer_class = MyObjectSerializer
當我打開API/api/myObjects /它給我一個全部列表e myObject模型。 當我點擊API/api/myObjects/60 /時,它只給出了id爲60的myObject。 太好了!
但是,我想要更改MyObjectsViewSet()的邏輯,以便在我點擊/ api/myObjects/60 /時可以操縱/更改它返回的內容。因此,我不想做MyObjects.objects.all()我想根據60的myObject ID做更復雜的事情。但是我怎麼做?在這個視圖中,我怎樣才能抓住這個數字60?它沒有被作爲參數傳入。但我真的需要它!
這看起來非常有前途!正是我需要的。 但是,當我在視圖中打印self.kwargs ['id']時,出現以下錯誤:名稱'self'未定義 –
您將不得不在視圖集方法中執行復雜的操作。文檔以get_queryset示例 http://www.django-rest-framework.org/api-guide/filtering#filtering-against-the-url – cyriacthomas
爲什麼選擇這麼高?這是一個視圖的性質創建超過1個新的網址... – Cruncher