我有 2 个通过 M2M 模型连接的模型:
class Person(models.Model):
name = models.CharField(max_length=30)
class Group(models.Model):
name = models.CharField(max_length=100)
members = models.ManyToManyField(Person, through='GroupPerson', related_name='groups')
class GroupPerson(models.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE)
person = models.ForeignKey(Person, on_delete=models.CASCADE)
rank = models.CharField(max_length=100', default='New')
和序列化器
class GroupPersonSerializer(serializers.ModelSerializer):
class Meta:
model = GroupPerson
fields = '__all__'
class GroupSerializer(serializers.ModelSerializer):
members = serializers.PrimaryKeyRelatedField(many=True, queryset=Person.objects.all())
class Meta:
model = Group
fields = '__all__'
class PersonSerializer(serializers.ModelSerializer):
groups = serializers.PrimaryKeyRelatedField(many=True, queryset=Group.objects.all())
class Meta:
model = Person
fields = '__all__'
和 API go get 一组返回
[
{
"name": "...",
"members": [ 1, ... ]
}
]
我如何得到类似以下的响应:
[
{
"name": "...",
"members": [
{
"group_id": 1,
"person_id": 1,
"rank": "New"
},
...
]
}
]
即,我想 GET/POST/PATCH通过关系的所有字段