检索Django休息框架相关字段

时间:2013-03-18 12:49:09

标签: python django django-rest-framework

使用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')

1 个答案:

答案 0 :(得分:3)

您在Project类上使用的相关名称命名非常严重。相关名称是您访问与给定流派实例相关的项目集的方式。所以你应该使用像related_name='projects'这样的东西。 (因为它是你错误的方法。)

然后确保您的序列化程序类与您正在使用的相关名称匹配,因此在project_set这两个地方应该是projects

(或者你可以完全删除related_name='genres',一切都会按照你的预期运作,因为默认的related_name将是'project_set'。)