【发布时间】:2021-12-20 10:14:47
【问题描述】:
上下文
我有两个视图集,它们有自己的路由器来自动从它们生成 URL:
- 模型视图集
- 模型B视图集
目前,只能通过以下 URL 访问 ModelAViewset 详细信息:
{root_url}/model-a/<slug>
'<slug>' 是 ModelA 的'slug' 字段,作为lookup_field。
我正在尝试找出一种方法来构建通往 ModelBViewset 详细信息的路线,如下所示:{root_url}/model-a/<model_a_slug>/model-b/<model_b_pk>
问题
- 有没有办法根据模型名称动态使用更明确的lookup_field 值?像这样:
{root_url}/model-a/<model_a_slug>
注意:为了在模型中保持简单,我宁愿保留 ModelA 的“slug”字段名称
-
基于 Viewsets 和 Routers,有没有办法通过 multi lookup_fields 访问 ModelBViewset 的详细信息?使用如下网址:
{root_url}/model-a/<model_a_slug>/model-b/<model_b_pk>
谢谢,提前
【问题讨论】:
-
DRF nested routers可以帮你实现{root_url}/model-a/<model_a_slug>/model-b/<model_b_pk> -
谢谢,确实,我昨天看到了。但似乎不可能使用“slug”而不是“pk”作为lookup_field
-
在
ModelAViewset中,您可以按照docs中的描述设置lookup_field = 'slug'以使用模型字段slug而不是pk -
然后当你使用嵌套路由器时,你可以对
ModelBViewset做同样的事情,这样你就可以得到{root_url}/model-a/<model_a_slug>/model-b/<model_b_slug>
标签: django django-models django-rest-framework lookup django-rest-viewsets