3 回答

TA貢獻1817條經(jīng)驗 獲得超14個贊
你的做法是錯誤的。您想要返回屬于托盤的圖像列表,因此您需要的是圖像的列表視圖,而不是托盤詳細信息視圖。網(wǎng)址應(yīng)如下所示:
/pallets/<pallet_id>/images/
通過這種方式,url 是自描述的,根據(jù) REST 標準,您可以輕松地看到您正在請求屬于托盤而不是托盤本身的圖像
在urls.py
urlpatterns = [
url(r'^pallets/', include([
url(r'^(?P<pallet_pk>[0-9]+)/images/$', views.PalletImagesListView.as_view(), name='pallet-images-list'),
])),
]
在視圖中,您必須覆蓋該get_queryset()方法,以便它只返回指定托盤的圖像
class PalletImagesListView(generics.ListAPIView):
serializer_class = ImageSerializer
def get_queryset(self):
return Image.objects.prefetch_related('pallet').filter(pallet__pk=self.kwargs.get('pallet_pk'))
所以現(xiàn)在你可以請求第一個托盤的圖像 /pallets/1/images/

TA貢獻1842條經(jīng)驗 獲得超13個贊
您正在使用序列化程序并以錯誤的方式查看。
您的PalletDetail觀點的問題是您使用了錯誤的查詢集。Pallet查詢集應(yīng)返回對象,因為查找將在該查詢集上進行(默認查找字段為“pk”)。此外,您將需要使用序列化程序,Pallet因為它應(yīng)該處理Pallet對象的數(shù)據(jù)。
class PalletDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Pallet.objects.all()
serializer_class = PalletSerializer

TA貢獻1883條經(jīng)驗 獲得超3個贊
在基于函數(shù)的視圖中 傳遞 pk 參數(shù) 示例:
def Example_function(request, pk): queryset = Model.objects.filter(id=pk)
在基于類的視圖中 獲取 url 參數(shù)
pk = self.kwargs.get('pk') queryset = Model.objects.filter(id=pk)
添加回答
舉報