Django REST框架中的反向多对多关系
如何在Django REST框架中为多对多相关对象序列化程序创建反向字段Django REST框架中的反向多对多关系,django,django-rest-framework,Django,Django Rest Framework,如何在Django REST框架中为多对多相关对象序列化程序创建反向字段 **Models** class Tag(models.Model): name = models.CharField(max_length=500, blank=True) class Event(models.Model): max_attendee = models.IntegerField(default=0) description = models.TextField(blank=T
**Models**
class Tag(models.Model):
name = models.CharField(max_length=500, blank=True)
class Event(models.Model):
max_attendee = models.IntegerField(default=0)
description = models.TextField(blank=True)
tags = models.ManyToManyField(Tag, related_name='events_tags')
** Serializers **
class EventSerializer(serializers.HyperlinkedModelSerializer):
tags = serializers.HyperlinkedRelatedField(many=True, view_name='tag-detail')
class Meta:
model = Event
fields = ('id', 'location', 'location_name', 'date', 'max_attendee', 'description', 'image', 'created_by', 'tags')
class TagSerializer(serializers.HyperlinkedModelSerializer):
events = serializers.HyperlinkedRelatedField(many=True, view_name='event-detail')
class Meta:
model = Tag
fields = ('name',)
因为标签模型中没有
events
字段,所以我无法显示与标签相关的事件。然而,反向执行效果很好,因为在事件模型中设置了多对多关系。您尝试过使用字段的相关名称吗
class TagSerializer(serializers.HyperlinkedModelSerializer):
events_tags = serializers.HyperlinkedRelatedField(many=True, view_name='event-detail')
class Meta:
model = Tag
fields = ('name', 'events_tags',)
尝试更改此选项:
events = serializers.HyperlinkedRelatedField(many=True, view_name='event-detail')
为此:
events_tags = serializers.RelatedField()
是的,但它会给出错误,因为“ManyRelatedManager”对象不可编辑