【问题标题】:Django Admin - Don't show results where a status tables shows "resolved"Django Admin - 不要显示状态表显示“已解决”的结果
【发布时间】:2023-03-12 14:21:01
【问题描述】:

我有一个模型和一个管理模型,其表单允许某人在中断状态为“活动”的主机上输入评论。评论表单(在管理员内)可以正常工作,它显示了中断表中的所有主机,但是我想从中断表中隐藏状态为“已解决”的所有主机。我没有在 django 文档上找到这样做的方法。这可能在管理页面中吗?根据列的值从表中过滤掉结果?

【问题讨论】:

    标签: python django admin


    【解决方案1】:

    对不起,我误解了你的帖子。

    要过滤管理中显示的结果集,您可以覆盖管理类的 queryset() 方法。

    像这样:

    class ExampleAdmin(admin.ModelAdmin):
        def queryset(self, request):
            qs = super(ExampleAdmin, self).queryset(request)
            return qs.exclude(status='Resolved')
    

    这将从您的管理页面中排除状态为“已解决”的任何行。

    另见SO post

    【讨论】:

    • 谢谢伙计。这让我 90% 到达了我需要的地方。在此基础上,如果带有状态字段的表是管理部分中不同模型的外键,这将如何工作?
    • 只修改排除查询:qs.exclude(status__name="Resolved")(如果你的状态表有一个名为name的字段)docs.djangoproject.com/en/dev/topics/db/queries/…
    【解决方案2】:

    【讨论】:

    • 列表过滤器不只是改变了管理页面的过滤器部分吗?我不希望人们能够将它们过滤掉,我根本不希望它们显示出来。类似于“从表中选择 * 状态!= '已解决'”
    猜你喜欢
    • 2010-12-24
    • 1970-01-01
    • 2014-05-15
    • 2018-07-26
    • 2013-02-23
    • 2016-04-23
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多