3

How can I create reverse field in Django REST framework for both many-to-many related objects serializers?

**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',)

Because there is no events field in Tags model, I cannot display events related to tags. However, reverse performs great because Many-to-Many relation is set in Events model.

brsbilgic
  • 11,613
  • 16
  • 64
  • 94

2 Answers2

0

Have you tried using the field's related name?

class TagSerializer(serializers.HyperlinkedModelSerializer):
    events_tags = serializers.HyperlinkedRelatedField(many=True, view_name='event-detail')

    class Meta:
        model = Tag
        fields = ('name', 'events_tags',)
mariodev
  • 13,928
  • 3
  • 49
  • 61
0

Try changing this:

events = serializers.HyperlinkedRelatedField(many=True, view_name='event-detail')

to this:

events_tags = serializers.RelatedField()
AdelaN
  • 3,366
  • 2
  • 25
  • 45