0

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

4

2 回答 2

2

您可以将所有没有标签的内容排除为:

tags = Product.objects.all().exclude(tag=None)
于 2015-12-09T06:39:22.243 回答
1

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

我所要做的就是改变

list_filter: ('tag__name')

list_filter: ('tag')

这是显示 Django 过滤器的常用方法。它让我可以看到所有和(无)

于 2015-12-09T23:59:56.793 回答