我已经为产品模型设置了 Django Rest Framework ModelViewSet
。产品有一个 uuid4
主键字段。 API ListView 正在工作,但我无法使用默认路由器访问详细 View ,我猜是因为 uuid4
主键不适合路由器期望的 pk
整数正则表达式?错误是 TypeError
中的 python3.6/site-packages/rest_framework/viewsets.py
:
From the router documentation ,我相信我需要一个自定义路由器,但我不明白如何将 {lookup}
字段从整数 pk regex 替换为 uuid4 regex (?P<uuid>[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12})
。我认为源代码的相关部分是 here 。
我目前的网址配置如下:
from .views.API.product import ProductViewSet
from django.conf.urls import include
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'product', ProductViewSet, base_name='product')
urlpatterns += [
url(r'^API/0.1/', include(router.urls)),
]
最佳答案
只需将您的代码更新为如下所示:
class ProductViewSet(ModelViewSet):
lookup_field = 'my_uuid_field'
lookup_field
告诉 DRF 使用这个字段而不是 pk
来获取项目关于python - 如何替换或编辑 django rest 框架路由器中的查找参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44704084/