Serialization Django Rest Framework-无法使用“视图名称”解析超链接关系的URL;“字段详细信息”;

Serialization Django Rest Framework-无法使用“视图名称”解析超链接关系的URL;“字段详细信息”;,serialization,django-models,django-rest-framework,Serialization,Django Models,Django Rest Framework,我知道这很不方便,可能是我需要了解更多关于序列化程序关系的信息 我有以下型号: class Field(models.Model): FIELD_TYPE_NATURE = 'Grama natural' FIELD_TYPE_ARTIFICIAL = 'Grama sintetica' FIELD_TYPE_CHOICES = ( (FIELD_TYPE_NATURE, u'Grama natural'), (FIELD_TYPE_A

我知道这很不方便,可能是我需要了解更多关于序列化程序关系的信息

我有以下型号:

class Field(models.Model):

    FIELD_TYPE_NATURE = 'Grama natural'
    FIELD_TYPE_ARTIFICIAL = 'Grama sintetica'

    FIELD_TYPE_CHOICES = (
        (FIELD_TYPE_NATURE, u'Grama natural'),
        (FIELD_TYPE_ARTIFICIAL, u'Grama sintetica'),
    )

    MODALITY_11 = 'Fútbol 11'
    MODALITY_8 = 'Fútbol 8'


    MODALITY_CHOICES = (
        (MODALITY_11, u'Fútbol 11'),
        (MODALITY_8, u'Fútbol 8'),
    )

    name = models.CharField(
        max_length=150,
        unique=True,
        db_index=True,
        primary_key=True,
        )

    field_type = models.CharField(
        choices=FIELD_TYPE_CHOICES,
        default=False,
        blank=False,
        max_length=20,
        verbose_name=('Tipo de material/grama de la cancha')
    )

    modality = models.CharField(
        max_length=40,
        blank=False,
        verbose_name='Modalidad'
    )
    photo = models.ImageField(upload_to='fields', blank=True, null=True)
    location = models.CharField(max_length=150, blank=False)

    def __str__(self):
        return '%s %s %s' % (self.name, self.field_type, self.location)
我的序列化程序如下所示:

class FieldSerializer(serializers.HyperlinkedModelSerializer):
    #url = serializers.HyperlinkedIdentityField(view_name='field-detail',)

    class Meta:
        model = Field
        fields = ('url', 'name','field_type','modality','photo','location')
我的视图集是:

class FieldViewSet(viewsets.ModelViewSet):
    queryset = Field.objects.all()
    serializer_class = FieldSerializer
这是我的路由器:

router = routers.DefaultRouter()
router.register(r'fields', FieldViewSet)
和我的网址:

...
url(r'^api/', include(router.urls)),
...
当我转到url时,会收到以下消息:

File "/home/bgarcial/.virtualenvs/fuupbol2/lib/python3.5/site-packages/rest_framework/relations.py", line 386, in to_representation
    raise ImproperlyConfigured(msg % self.view_name)
django.core.exceptions.ImproperlyConfigured: Could not resolve URL for **hyperlinked relationship using view name "field-detail". You may have failed to include the related model in your API, or incorrectly configured the `lookup_field` attribute on this field.**
[11/Nov/2016 16:39:53] "GET /api/fields/ HTTP/1.1" 500 187477
在我的
FieldSerializer
类中使用时:

class FieldSerializer(serializers.HyperlinkedModelSerializer):
    url = serializers.HyperlinkedIdentityField(view_name='field-detail',)

    class Meta:
        model = Field
        fields = ('url', 'name','field_type','modality','photo','location')
我也会犯同样的错误。 虽然当我转到我想要的url时,得到的是我的对象列表,但我可能应该放:

url = serializers.HyperlinkedIdentityField(view_name='field-list',)
?

我使用HyperlinkedEntityField的依据是:

此字段可以作为身份关系应用,例如 HyperlinkedModelSerializer上的“url”字段。它也可以用于 对象上的属性

我将
字段列表
放在我的
视图_name
属性中,得到与错误相关的

Could not resolve URL for hyperlinked relationship using view name "field-list". You may have failed to include the related model in your API, or incorrectly configured the `lookup_field` attribute on this field.
我不明白什么情况下我应该使用
view\u name
属性来表示我是否需要获取对象列表、对象详细信息等等。。。尽管解释一下


当我在路由器中将视图声明为
字段
时,我应该使用
HyperlinkedModelSerializer
ModelSerializer

作为HyperlinkedEntityField的
视图名
。当我在路由器中将视图声明为
字段
时,我应该使用
fields detail
作为HyperlinkedEntityField的
view\u name