class File(MPTTModel):
name=models.CharField(max_length=36, primary_key=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)
num=models.IntegerField(null=True)
class MPTTMeta:
order_insertion_by = ['name']
我尝试使用以下代码对此类进行序列化:
class RecursiveField(serializers.Serializer):
def to_representation(self, value):
serializer = self.parent.parent.__class__(value, context=self.context)
return serializer.data
class FileSerializer(serializers.ModelSerializer):
parent=RecursiveField(many=True)
class Meta:
model = File
fields=('name','num','parent')
但我失败了,因为我只能输出这棵树的根节点的内容。似乎序列化程序无法访问根节点的子节点,进一步地,也无法访问子节点的子节点... 具体问题在于输出中显示“父级”为空,但实际上它有4个子节点,每个子节点都包含几个后代。我的代码哪里出了问题?谢谢大家帮忙!
MPTTModel
是一个简单的模型,其中包含一些额外的字段,所以我不明白问题出在哪里:你可以将模型扁平化序列化,不需要递归进入其中,对吧? - Wtower