manytomany
django で関係を取得しようとしていますが、次のエラーが発生しています -
name
シリアライザー GenreSerializerでフィールドの値を取得しようとすると、AttributeError が発生しました。serializer フィールドの名前が正しくない可能性があり、 Movie インスタンスのどの属性またはキーとも一致しません。元の例外テキストは次のとおりでした: 'Movie' オブジェクトには属性 'name' がありません。
設定を推奨する同様の回答がここにありますが、many=True
機能しません-
フィールドの値を取得しようとすると属性エラーが発生します
models.py
class Genre(models.Model):
name = models.CharField(max_length=255,unique=True)
def __unicode__(self):
return self.name
class Movie(models.Model):
mname = models.CharField(max_length=255)
genres = models.ManyToManyField(Genre,related_name='movies')
def __unicode__(self):
return self.mname
serializers.py
class GenreSerializer(serializers.ModelSerializer):
class Meta:
model = Genre
fields = ('name','id')
class MovieSerializer(serializers.ModelSerializer):
genres = GenreSerializer(many=True, read_only=True)
class Meta:
model = Movie
fields = ('id','genres','mname')
urls.py
urlpatterns = [
url(r'^genres/$', views.GenreList.as_view()),
url(r'^genres/(?P<pk>[0-9]+)$', views.GenreDetail.as_view()),
]
urlpatterns = format_suffix_patterns(urlpatterns)
ビュー.py
class GenreList(generics.ListCreateAPIView):
queryset = Genre.objects.all()
serializer_class = GenreSerializer
class GenreDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = GenreSerializer
def get_queryset(self):
genres = Genre.objects.get(pk=self.kwargs.get('pk', None))
movies = Movie.objects.filter(genres=genres)
return movies