1

我在同一模型中有父/子关系。例子:

  • 家长评论
    • 儿童评论01
      • 儿童评论02

我想构建一个 API,使所有子线程都处于嵌套状态。目前它只是提出了父母的意见。

我当前的 API.py 如下所示:

class ThreadResource(ModelResource):
    locations = fields.ToManyField('forum.api.comments','parent', full=True)

class Meta:
    queryset = comments.objects.all()
    resource_name = 'Comments'

class comments(ModelResource):
    class Meta:
        queryset = comments.objects.all()
        resource_name = 'comms'

我在模型中这样做的方式是:

class comments(models.Model):
    title = models.CharField(max_length=255)
    parent = models.ForeignKey('self', blank=True,null=True)
    sort = models.IntegerField(default=0)
    content = models.CharField(max_length=255)
4

1 回答 1

3

首先,您需要定义一个过滤器函数,该函数将返回父评论的查询集。我们称它为 filter_comments_per_bundle:

def filter_comments_per_bundle(bundle);
    parent = bundle.obj
    return comments.objects.filter(parent=parent)

接下来,只需在评论模型资源中添加对 self 的引用:

children = fileds.ToManyField('self', filter_comments_per_bundle, full = True, null = True)

最后,对不起,这是一个小问题。s/comments/Comment/ 模型应该是单数,首字母大写。

哦,还有一件事。不要将 Models 和 ModelResources 命名为相同的名称。重命名注释 ModelResource。

于 2013-08-26T17:51:46.013 回答