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

Filter to show "null" relations (where no results related to the item)

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

的项目

查询将是这样的:

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

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

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

我刚刚弄明白了 - Django 使用 "list_filter" 自动执行此操作。但它只有在你使用标签(models.py 中定义的自己的名字)时才有效,而不是我下面的方式。

我所要做的就是改变

list_filter: ('tag__name')

list_filter: ('tag')

这是显示 Django 过滤器的常用方法。它允许我看到所有 & (none)