Python Django Rest框架,多对多组

Python Django Rest框架,多对多组,python,django,django-models,django-rest-framework,Python,Django,Django Models,Django Rest Framework,我不熟悉使用DRF。我有一个2层多对多的关系,我希望能够服务 # models.py class Person(models.Model): name = models.CharField(max_length=32) class Group (models.Model): name = models.CharField(max_length=32) people = models.ManyToManyField(Person,related_name='groups',

我不熟悉使用DRF。我有一个2层多对多的关系,我希望能够服务

# models.py
class Person(models.Model):
    name = models.CharField(max_length=32)
class Group (models.Model):
    name = models.CharField(max_length=32)
    people = models.ManyToManyField(Person,related_name='groups',blank=True)
class Event(models.Model):
    name = models.CharField(max_length=32)
    groups = models.ManyToManyField(Group,related_name='events',blank=True)
在我的序列化程序中,我希望能够亲自展示他们正在参加的活动

class PersonSerializer(serializers.ModelSerializer):
    groups = serializers.StringRelatedField(many=True)
    #not sure how to lookup the events related field here...
    events = EventSerializer(source='groups.name', many=True,read_only=True)

    class Meta:
        model = Person
        fields = ('name', 'events')
但是,我在查找事件时出错。这种查找可能吗

当前输出如下所示:

{
    "id": 1,
    "name": "mike",
    "groups": [
        "dev"
    ],
    "events": null
}

我希望输出是一个事件列表。

我不知道这是否有效

class EventSerializer(serializers.ModelSerializer):

    class Meta:
        Model = Event
        fields = ('name')

class GroupSerializer(serializers.ModelSerializer):
    events = EventSerializer(many=True, read_only=True)
    class Meta:
        model = Group
        fields = ('name', 'events')
然后,更新PersonSerializer

class PersonSerializer(serializers.ModelSerializer):
    groups = GroupSerializer(many=True, read_only=True)
    class Meta:
        model = Person
        fields = ('name', 'groups')

我得到一个错误:AssertionError:在序列化程序“MemberSerializer”中的字段“ListSerializer”上指定
source='groups'
是多余的,因为它与字段名相同。删除
关键字参数。