如何更改网址路由器DRF中的参数名称?



如何更改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')

您可以使用lookup_fieldlookup_url_kwarg来控制这一点。以下是文档。

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

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

在您的Viewset中,在ProductViewSet的情况下,添加lookup_url_kwarg = 'person_id'

否则,路由器将默认为'pk'forlookup_url_kwarg

这应该可以解决问题。我希望它有所帮助。:)

相关内容

  • 没有找到相关文章

最新更新