如何更改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_field
和lookup_url_kwarg
来控制这一点。以下是文档。
- lookup_field - 应用于执行单个模型实例的对象查找的模型字段。默认为 "啪"。请注意,使用超链接 API 时,需要确保 API 视图和序列化程序类都设置了查找 字段(如果需要使用自定义值(。
- lookup_url_kwarg - 应用于对象查找的 URL 关键字参数。网址会议应包含关键字参数 对应于此值。如果未设置,则默认使用 与lookup_field值相同。
这已经有一段时间了。但是遇到了同样的问题,我认为这对其他人会有所帮助。
在您的Viewset
中,在ProductViewSet
的情况下,添加lookup_url_kwarg = 'person_id'
。
否则,路由器将默认为'pk'
forlookup_url_kwarg
。
这应该可以解决问题。我希望它有所帮助。:)