在 Tastypie 中表示分层数据
Representing Hierarchical Data in Tastypie
各位!
我是 Django(和 Tastypie)的新手,我在分层数据方面遇到了一些问题。在我的项目中,我们有几个类别,由以下模型表示:
class Category(MPPTModel):
desc = models.CharField(max_length=200)
parent = TreeForeignKey('self', null=True, related_name='children')
至于服务器响应,我想要类似的东西(json 包含所有类别及其各自的子类别,等等):
[
{
"id" : 0,
"decription" : "category1",
"categories" : [
{
"id" : 1,
"description" : "category2",
"categories" : [ ... ]
},
...
]
},
...
]
资源模型:
class CategoryResource(ModelResource):
resource_name = 'listCategories'
queryset = Category.objects.filter.all()
def alter_list_data_to_serialize(self, request, data):
return { 'status' : 'success', 'categories' : data }
我试过对 Paginator 进行子类化,但我注意到我只被允许在 'objects' 列表中发送纯数据。有什么办法可以修改此行为?我在监督这里吗?
感谢您的宝贵时间。
与 silvio 在他的回复中提到的类似,我发现提供自我关系的正确方法是使用 ToOneField:
class Category(MPTTModel):
descr = models.CharField(max_length=200)
parent = TreeForeignField('self', null=True, related_name='children')
class CategoryResource(ModelResource):
category = fields.ToOneField('self', 'parent', full=True, null=True)
# Rest of your Resource class
希望这个回答对其他人有用!
各位!
我是 Django(和 Tastypie)的新手,我在分层数据方面遇到了一些问题。在我的项目中,我们有几个类别,由以下模型表示:
class Category(MPPTModel):
desc = models.CharField(max_length=200)
parent = TreeForeignKey('self', null=True, related_name='children')
至于服务器响应,我想要类似的东西(json 包含所有类别及其各自的子类别,等等):
[
{
"id" : 0,
"decription" : "category1",
"categories" : [
{
"id" : 1,
"description" : "category2",
"categories" : [ ... ]
},
...
]
},
...
]
资源模型:
class CategoryResource(ModelResource):
resource_name = 'listCategories'
queryset = Category.objects.filter.all()
def alter_list_data_to_serialize(self, request, data):
return { 'status' : 'success', 'categories' : data }
我试过对 Paginator 进行子类化,但我注意到我只被允许在 'objects' 列表中发送纯数据。有什么办法可以修改此行为?我在监督这里吗?
感谢您的宝贵时间。
与 silvio 在他的回复中提到的类似,我发现提供自我关系的正确方法是使用 ToOneField:
class Category(MPTTModel):
descr = models.CharField(max_length=200)
parent = TreeForeignField('self', null=True, related_name='children')
class CategoryResource(ModelResource):
category = fields.ToOneField('self', 'parent', full=True, null=True)
# Rest of your Resource class
希望这个回答对其他人有用!