【发布时间】:2017-08-03 19:39:34
【问题描述】:
我正在尝试使用除 pk 之外的替代 id 作为超链接,但是我收到错误消息:
无法使用视图名称“foos-detail”解析超链接关系的 URL。您可能没有在 API 中包含相关模型,或者在此字段上错误地配置了
lookup_field属性。在处理上述异常期间(使用参数 '()' 和关键字参数 '{'pk': 27}' 反转'foos-detail'。尝试了 2 个模式:['api/foos /(?P[^/.]+)\.(?P[a-z0-9]+)/?$', 'api/foos/(?P[^/.]+)/$']) ,发生了另一个异常:
序列化器:
class FooSerializer(serializers.HyperlinkedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='foos-detail', format='html')
class Meta:
model = Foo
fields = ('url', 'alt_id', 'created', 'modified', 'name')
视图集:
class FooViewSet(viewsets.ModelViewSet):
queryset = Foo.objects.all()
serializer_class = FooSerializer
lookup_field = 'alt_id'
网址:
router = DefaultRouter()
router.register(r'foos', FooViewSet, 'foos')
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]
编辑:这绝对是尝试使用lookup_field 的结果。删除视图集中的 lookup_field 会导致 pk 正确显示超链接。
【问题讨论】:
标签: python django-rest-framework