0

django-rest-frameworkを使用すると、関連するフィールドからコンテンツを取得できます。たとえば、その中のすべてのプロジェクトを含むジャンルリストを作成したいと思います。これは私が持っているものですが、私はエラーを受け取り続けます:

「ジャンル」オブジェクトには属性「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')
4

1 に答える 1

3

Projectクラスで使用している関連する名前の名前が正しくありません。その関連する名前は、特定のジャンルのインスタンスに関連する一連のプロジェクトにアクセスする方法です。したがって、のようなものを使用する必要がありますrelated_name='projects'。(それはあなたがそれを間違った方法で持っているので。)

次に、シリアライザークラスが使用している関連する名前と一致していることを確認します。そのため、両方の場所project_setで代わりにprojects

(または、完全に削除することもできます。related_name='genres'デフォルトのrelated_nameは、期待どおりに機能します'project_set'。)

于 2013-03-18T12:55:09.497 に答える