Esc*_*her 2 python django django-rest-framework
我已经ModelViewSet为产品模型设置了Django Rest Framework 。产品具有uuid4主键字段。API列表视图正在运行,但是我无法使用默认路由器访问详细信息视图,我猜是因为uuid4主键不适合pk路由器期望的整数正则表达式?错误是TypeError在python3.6/site-packages/rest_framework/viewsets.py:
Retrieve()得到了意外的关键字参数'pk'
从路由器文档中,我相信我需要一个自定义路由器,但是我不明白如何将{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})。我认为源代码的相关部分在这里。
我目前的网址配置如下:
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)),
]
Run Code Online (Sandbox Code Playgroud)
只需将您的代码更新为如下所示:
class ProductViewSet(ModelViewSet):
lookup_field = 'my_uuid_field'
Run Code Online (Sandbox Code Playgroud)
lookup_field告诉DRF使用此字段而不是pk获取物品
| 归档时间: |
|
| 查看次数: |
932 次 |
| 最近记录: |