【发布时间】:2015-06-13 09:21:44
【问题描述】:
以下是我的代码:
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')
但是我失败了,我只能输出这棵树的根节点的内容。似乎序列化器无法访问根的孩子,更进一步的孩子的孩子...... 具体问题是,在输出中,'parent' 显示为 'null',但实际上它有 4 个孩子,每个孩子都包含几个后代。 我的代码有什么问题? 谢谢大家帮助我!
【问题讨论】:
-
一个
MPTTModel是一个简单的模型,里面有一些额外的字段,所以我不明白问题到底出在哪里:你可以序列化模型平面,你不必重新进入对吧?
标签: python django django-mptt