有没有简单的方法来序列化由模型给出的树,例如下面所示的类别?
我想得到一个 json 对象,例如:
[ { 'name': 'cat1',
'children': [ { 'name': 'cat11',
'children': [ ... ]
]
}
...
]
Thanks
class Category(MPTTModel):
name = models.CharField(max_length=50, unique=True)
parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
order_key = models.IntegerField()
class Meta:
verbose_name_plural = 'Categories'
class MPTTMeta:
order_insertion_by = ['order_key']
def __unicode__(self):
return "%s" %(self.name)
我认为您必须遍历树,并构建一个使用 JSON 序列化的对象。我假设你的树是非循环的,因为否则它会变得更加复杂。我还没有测试过这个,但是这样的东西会起作用(只要你确定你没有循环):
def serialize_to_json(self):
return json.dumps(self.serializable_object())
def serializable_object(self):
"Recurse into tree to build a serializable object"
obj = {'name': self.name, 'children': []}
for child in self.get_children():
obj['children'].append(child.serializable_object())
return obj
(不记得是否children_set
是获取孩子名单的正确方法。如有错误请评论。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)