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

如何在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=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”对象不可编辑