Python 使用带有前缀视图名称的Django HyperlinkedModelSerializer

Python 使用带有前缀视图名称的Django HyperlinkedModelSerializer,python,django,django-rest-framework,Python,Django,Django Rest Framework,我当前正在尝试使用HyperlinkedModelSerializer,但出现错误: 无法使用视图名称“house detail”解析超链接关系的URL 应该是backend:house detail,我的RESTAPI中的所有视图都有“backend:”前缀。如何让Django REST自动添加前缀?要手动添加前缀,请执行以下操作: class HouseSerializer(serializers.HyperlinkedModelSerializer): url = seriali

我当前正在尝试使用HyperlinkedModelSerializer,但出现错误:

无法使用视图名称“house detail”解析超链接关系的URL


应该是backend:house detail,我的RESTAPI中的所有视图都有“backend:”前缀。如何让Django REST自动添加前缀?

要手动添加前缀,请执行以下操作:

class HouseSerializer(serializers.HyperlinkedModelSerializer):

    url = serializers.HyperlinkedIdentityField(
        view_name='backend:house-detail'
    )

    ...
但仍然不知道如何自动完成,所以如果我更改前缀,我需要手动更改

但仍然不知道如何自动完成,所以如果我更改前缀,我需要手动更改

这是使用基类和继承可以帮助的时候

class PrefixedSerializer(serializers.HyperlinkedModelSerializer):
    prefix = 'backend'
    url = serializers.HyperlinkedIdentityField(
        view_name='{}:house-detail'.format(prefix)
    )
所以现在
HouseSerializer
继承自该基类

class HouseSerializer(PrefixedSerializer):
    # the other fields

伟大的Django REST框架似乎不存在;我没有办法自动做到这一点,但在这里使用继承很好。“self.”确实给出了一个变量未定义的错误,只是删除它就可以了。@user158024哦,是的,我并没有真正努力给出正确的语法,而且您可能还必须将
house detail
部分隔离到
house serializer
中的一个变量中,但我希望我帮助您了解了如何使用基类实现这一点!你当然做到了。