【发布时间】:2013-12-10 17:48:22
【问题描述】:
让我们从 django 文档中关于 M2M 关系的模型开始,该模型使用 through 参数指向将充当中介的模型。
class Person(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person,
through='Membership')
def __unicode__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
class Meta:
ordering = ['date_joined']
假设现在我想为 Group 模型保留一个 read-write 视图,该视图还包含每个组内的所有 Person,按 date_joined 字段排序。我想获得的json序列化如下(成员只用他们的id来描述):
{
"id": 1,
"name": "U2",
"members": [
20,
269,
134,
12,
]
}
我写了一个序列化器:
class GroupSerializer(serializers.ModelSerializer):
members = serializers.SlugRelatedField(source='membership_set',
many=True,
read_only=False,
slug_field='person_id',
required=True)
class Meta:
model = Group
fields = ('id', 'name', 'members')
虽然对于读取操作它运作良好,但它不适用于写入。我应该如何定义序列化器,以便在上面定义的序列化下,它将继续:
- 创建组对象
- 将每个成员添加到组(通过创建成员资格对象)
【问题讨论】: