【问题标题】:Filter to show "null" relations (where no results related to the item)过滤以显示“空”关系(没有与项目相关的结果)
【发布时间】:2016-03-14 07:56:09
【问题描述】:

很简单,django 过滤器(标准)为您提供查看“全部”的选项。我想创建一个选项来显示包含“无”的项目

查询应该是这样的:

tags = Product.objects.exclude(tag__isnull=True)

我的模型.py

class Tag(models.Model):
    name = models.CharField(max_length=100, blank=False)
    def __unicode__(self):
        return self.name

class Product(models.Model):
    name = models.CharField ("Name", max_length=400)
    tag = models.ManyToManyField(Tag, blank=True)
    def __unicode__(self):
       return self.name

我将如何实现这一目标?我尝试了一个 SimpleListFilter,但这只是列出了过滤器中的所有项目。我希望这些项目显示在管理页面视图中。管理员操作可以执行此操作吗?

【问题讨论】:

    标签: django-admin django-admin-filters django-admin-actions


    【解决方案1】:

    我刚刚想通了——Django 使用“list_filter”自动执行此操作。但它只有在你使用标签(models.py 中定义的自我名称)时才有效,而不是我下面的方式。

    我要做的就是改变

    list_filter: ('tag__name')
    

    list_filter: ('tag')
    

    这是显示 Django 过滤器的常用方法。它让我可以看到 All & (none)

    【讨论】:

      【解决方案2】:

      你可以排除所有没有标签的:

      tags = Product.objects.all().exclude(tag=None)
      

      【讨论】:

      • 谢谢。我是否使用管理员操作来实现这一点? SimpleListFilter 不起作用?
      猜你喜欢
      • 2018-05-15
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 2022-11-29
      • 2013-01-10
      • 2012-06-03
      • 1970-01-01
      相关资源
      最近更新 更多