所以我有一个表示“Assembly”的模型,其中一个程序集可以有任意数量的子程序集,并且对于每个子程序集,它指定它包含的子程序集的实例数。例如,A包含1 B和2 C,而B包含1 D,C不包含任何内容,D不包含任何内容。我在模型中代表了这一点:
from django.db import models
class Assembly(models.Model):
guid = models.CharField(max_length=40, unique=True, primary_key=True)
subassemblies = models.ManyToManyField('self', blank=True, symmetrical=False,
through='AssemblyLink',
through_fields=('parent', 'child'))
class AssemblyLink(models.Model):
parent = models.ForeignKey(Assembly, on_delete=models.CASCADE, related_name='child_link_set')
child = models.ForeignKey(Assembly, on_delete=models.CASCADE, related_name='parent_link_set')
count = models.PositiveSmallIntegerField() # Small means <32k
这似乎有效,但我无法弄清楚如何编写序列化程序,以便它可以读取JSON来创建模型,并将模型转换回JSON。我希望能够阅读看起来像的JSON:
{
"guid": "GUID123",
"subassemblies": [
{"child": "GUID1234", "count": 1}
]
}
虽然这种格式很灵活。现在我的AssemblySerializer看起来像这样:
class AssemblySerializer(serializers.ModelSerializer):
subassemblies = ...
class Meta:
model = Assembly
fields = ('guid', 'subassemblies')
我应该如何填写......以使其发挥作用?