【发布时间】:2017-03-29 01:37:38
【问题描述】:
目前我在商店的 view.py 中有这个类
class ShopDetailAPIView(RetrieveAPIView):
queryset = Shop.objects.all()
serializer_class = ShopDetailSerializer
lookup_field = 'Suburb'
permission_classes = [IsAuthenticated]
还有我商店的 urls.py 显示这个特定的 api。
urlpatterns = [
url(r'^$', ShopListAPIView.as_view(), name = 'list' ),
url(r'^(?P<Suburb>\w+)/$', ShopDetailAPIView.as_view(), name = 'detail'),
]
ShopDetailAPIView 类的目的是显示存储在数据库中的数据的过滤版本。这样如果用户输入
http://example.com/shop/locationname
链接会根据位置显示Django rest_framework api。
我面临的问题是当有多个对象时,页面返回
get() returned more than one Shop -- it returned 3!
我认为我的解决方案是将我的查询集更改为
queryset = Shop.Objects.filter(Suburb = suburb)
但是我不知道如何使用 RetreiveAPIView 来实现。
我知道有一些替代方案,例如 django-filter,可以在这种情况下完美运行。但是有什么方法可以实现我上面的代码以显示超过 3 个对象。
谢谢
【问题讨论】:
标签: python django django-rest-framework