2013-03-18 101 views
0

使用django-rest-framework可以从相关字段检索内容。例如,我想创建一个包含其中所有项目的流派列表。这是我,但我不断收到错误:检索Django rest框架相关字段

'Genre' object has no attribute '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') 

回答

3

你正在使用的Project相关名称班级被严重命名。这个相关的名字就是你如何访问与给定流派实例相关的一组项目。所以你应该使用类似related_name='projects'的东西。 (因为它是错误的方式。)

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

(或者你可以只取出全部的related_name='genres',一切都将作为您所期望的,因为默认related_name会'project_set'。)

相关问题