在Tastypi中表示层次数据

2024-04-29 09:55:54 发布

您现在位置:Python中文网/ 问答频道 /正文

所有人!你知道吗

我是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”列表中发送纯数据。有什么方法可以改变这种行为吗?我是在监督这里的事情吗?你知道吗

谢谢你的时间。你知道吗


Tags: 数据项目djangonameselfiddataobjects
1条回答
网友
1楼 · 发布于 2024-04-29 09:55:54

与西尔维奥在回复中提到的类似,我发现提供自我关系的正确方法是使用图内菲尔德:

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

我希望这个答案对其他人有用!你知道吗

相关问题 更多 >