django 如何更改URL路由器DRF中参数的名称?

brgchamk  于 2023-08-08  发布在  Go
关注(0)|答案(2)|浏览(131)

如何更改url中某些参数的名称?就像这样//,但默认情况下参数名是“pk”,我向"api/product/1/rate/1/"发出请求并获得{'product_pk': '1', 'pk': '1'}
我想把“pk”重命名为“person_id”。
这怎么搞的?

from rest_framework_nested import routers

router = routers.SimpleRouter()
router.register(r'product', ProductViewSet)
rate_router = routers.NestedSimpleRouter(router, r'product', lookup='product')
rate_router.register(r'rate', RateViewSet, base_name='rate')

字符串

cfh9epnr

cfh9epnr1#

您可以通过使用lookup_fieldlookup_url_kwarg来控制这一点。这是文件

  • lookup_field -应用于执行单个模型示例的对象查找的模型字段。默认为“pk”。请注意,在使用超链接API时,如果需要使用自定义值,则需要确保API视图和序列化程序类都设置了查找字段。
  • lookup_url_kwarg -用于对象查找的URL关键字参数。URL conf应包含与此值对应的关键字参数。如果未设置,则默认使用与lookup_field相同的值。
x3naxklr

x3naxklr2#

已经有一段时间了。但是遇到了同样的问题,我想那会对其他人有帮助。

在您的视图集中,在本例中为ProductViewSet,添加lookup_url_kwarg = 'person_id',否则路由器将使用默认的'pk' lookup_url_kwarg。

这就解决了问题。希望对你有帮助。:)

相关问题