过滤显示" null"关系(没有与项目相关的结果)

时间:2015-12-09 06:28:13

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

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

的项目

查询将是这样的:

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

我的models.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,但是这只列出了过滤器中的所有项目。我希望项目显示在管理页面视图中。管理员操作可以执行此操作吗?

2 个答案:

答案 0 :(得分:2)

您可以将所有没有标记的内容排除在:

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

答案 1 :(得分:1)

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

我所要做的就是改变

list_filter: ('tag__name')

list_filter: ('tag')

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