5
讓我們從django文檔中使用的有關使用through參數的M2M關係的模型開始,指出將充當中介的模型。如何在django-rest中使用M2M關係
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']
現在假設我想有一個休息讀寫視圖也包含每組裏面所有的人,通過場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')
而對於讀操作,它工作得很好,它不寫作。我應該如何定義串行因此,鑑於上述定義的序列化,它將被繼續:
- 創建組對象
- 添加每個工作組成員(通過創建一個成員對象)
非常感謝您給我的明確答案,以及文檔相關部分的鏈接或作者對該問題的回答。這是一個可惜的,我試圖做的並不是非常支持這個框架。你能否建議我通過自己編寫代碼來完成任務?什麼是正確的方法?再次感謝你! – Dragster
我很高興我可以幫助:)至於創建部分,您可以在兩個位置執行此操作:在** post/create **方法或** post_save **方法中。我建議在** post_save **中完成它,因爲這意味着您允許框架創建Group對象,剩下要做的就是添加成員。我將用一小段代碼片段編輯我的答案,以瞭解如何使用此方法。 – AdelaN
非常感謝,您的支持非常感謝! – Dragster