使用django-rest-framework可以从相关字段中检索内容。例如,我想创建一个包含其中所有项目的流派列表。这就是我所拥有的,但我一直在收到错误:
'Genre'对象没有属性'project_set'
models.py
class Genre(models.Model):
name = models.CharField(max_length=100, db_index=True)
class Project(models.Model):
title = models.CharField(max_length=100, unique=True)
genres = models.ManyToManyField(Genre, related_name='genres')
serializers.py
class GenreSerializer(serializers.ModelSerializer):
project_set = serializers.ManyRelatedField()
class Meta:
model = Genre
fields = ('name', 'project_set')
答案 0 :(得分:3)
您在Project
类上使用的相关名称命名非常严重。相关名称是您访问与给定流派实例相关的项目集的方式。所以你应该使用像related_name='projects'
这样的东西。 (因为它是你错误的方法。)
然后确保您的序列化程序类与您正在使用的相关名称匹配,因此在project_set
这两个地方应该是projects
。
(或者你可以完全删除related_name='genres'
,一切都会按照你的预期运作,因为默认的related_name将是'project_set'
。)