有一个使用REST API的Django项目。Django REST:在1个url上显示详细信息和列表
大多数链接图案的遵循相同的范例:
/foo_config/1
基本上/list-view/details-view
但还有另一种类型的配置的 - 这只能有1个对象,所以示出了它喜欢/bar_config/1
是混乱的,因为用户可能会期望#2和#3等。
我想'映射'bar_config
细节和列表一起使用简单/bar_config
。
使用@detail_route
试过,但它不工作:
@detail_route(methods=['put'])
def put_config(self, request):
...
如何实现我的目标?
更新:在尝试玩detail_route
和伊万Semochkin答案 - 仍然没有运气。我将提供什么,我有更多的细节:
/accounts/foo_account/bar_config/
< - 列表视图 /accounts/foo_account/bar_config/1
< - 详细信息视图定义为
帐户:
router = routers.DefaultRouter()
router.register('accounts', AccountViewSet)
目标是:
- 显示
bar_config/1
在bar_config
(PUT在LIST页面上); - 禁止/隐藏
bar_config/1
; - 允许查看和更新信息,禁止创建/删除;
我会总结一下:我需要改变子链接在现有项目中的工作方式,它已经在所有模式中使用DefaultRouter
。这个子链接映射单例模型。我想在列表(GET)页面上显示更新(PUT)数据。
我需要一个只读模型(no创建,不删除)。也希望能够直接在列表视图上放置。 – Oleg
@ h3d0所以你可以使用'ModelViewSet'来代替,并执行与'retrieve'方法相同的操作。但是'put'有一个问题,你需要覆盖默认的url,因为默认情况下它是w8的查找字段,就像pk在检索中一样。 –
这是一个问题:如何覆盖'put'中的默认网址。 – Oleg