Python Django Rest框架,多对多组
我不熟悉使用DRF。我有一个2层多对多的关系,我希望能够服务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',
# 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'
是多余的,因为它与字段名相同。删除源
关键字参数。