django-mptt 过滤器而不破坏树

标签 django model filter tree mptt

我在我的 Django 应用程序中使用 django-mptt 作为文章模型。如果我想获取所有设置为例如隐藏的文章,我可以这样做

Article.objects.filter(hidden=False)

但这会破坏 mptt 树。如何以这样的方式过滤我的查询集,不仅排除所有隐藏的文章,而且排除这些节点的子节点,并以这种方式保持树的完整性,以便我仍然可以使用 tree_info 模板标签?

最佳答案

我有一个类似的问题。我想删除一个节点及其所有子节点。

这是我如何设法做到这一点:

class FolderForm(forms.ModelForm):
    class Meta:
        model = Folder
        fields = ('name', 'parent')

    def __init__(self, *args, **kwargs)
        super(FolderForm, self).__init__(*args, **kwargs)

        if self.instance is not None:
            exclude_ids = [f.id for f in self.instance.get_descendants(
                include_self=True)]

            self.fields['parent'].queryset = self.fields['parent'].queryset \
                .exclude(pk__in=exclude_ids)

关于django-mptt 过滤器而不破坏树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12370695/

相关文章:

python - Django 模型字段如何与多个模型相关?

r - 按列名向量和常量列名过滤数据框

r - dplyr 按第一列过滤

javascript - Charts.js 2.5 不显示在 Django 中

python - 在 django 代码中获取静态文件的文件路径

php - 在 Laravel 中保存数据时如何禁用 updated_at 和 created_at

javascript - ExtJS 4 : Write nested XML with model associations

haskell - Haskell 中 Pointfree 风格的元素数量

javascript - `xhr.getAllHeaders()` 在浏览器扩展上下文中缺少一些 header ?

python - 我的 Controller 逻辑在 Django 中放在哪里?