Django admin GUI能否筛选文本字段是否为空?

Django admin GUI能否筛选文本字段是否为空?,django,Django,我有一个Django模型,其中包含一个文本字段。在管理GUI中,我希望能够只筛选包含此字段中文本的记录。可能吗 类似这样的代码将对textfield的内容进行过滤,但会在“All”和过滤器中的每个不同条目上显示过滤器。我想筛选“全部”或“包含某些内容” class MyModel(models.Model): # ... textfield = models.CharField(max_length=100) # ... class MyModelAdmin(admin

我有一个Django模型,其中包含一个文本字段。在管理GUI中,我希望能够只筛选包含此字段中文本的记录。可能吗

类似这样的代码将对textfield的内容进行过滤,但会在“All”和过滤器中的每个不同条目上显示过滤器。我想筛选“全部”或“包含某些内容”

class MyModel(models.Model):
    # ...
    textfield = models.CharField(max_length=100)
    # ...

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('...', 'textfield', '...')
    list_filter = ('...', 'textfield', '...')
不,看到了吗

将列表过滤器设置为在中激活过滤器 更改列表的右侧栏 页面的管理员。这应该是一个 字段名列表,以及每个 指定的字段应为 BooleanField,CharField,DateField, DateTimeField、IntegerField或 外键

但是

两件事

  • 请确保允许文本字段为空

    类MyModel(models.Model): # ... textfield=models.CharField(最大长度=100,空白=True) #

  • 添加一个is_blank方法以帮助处理。它不过滤,但很有帮助

    def为空(自身): 返回len(self.textfield)==0


  • 是的,但没有记录在案。查看
    django\contrib\admin\filterspecs.py
    了解如何创建默认过滤器规范以及如何创建自己的过滤器规范。此功能计划用于版本1.1,如果您现在想在最新的HEAD版本上尝试此功能,则已经有一个补丁:


    另外,您可以在更改列表页面的URL上放置任意GET参数以过滤结果,这一事实也没有记录在案。例如
    /admin/app/model/?field1\uu lte=5和field2\uu gte=10
    ,不幸的是
    ?field\uu isnull=True
    不起作用,但您可以很容易地进行实验,看看是否可以找到一个适用于您的情况的过滤器。

    是的,您可以扩展SimpleListFilter,并且从django 1.4开始就很容易地做到这一点。见:

    请参阅:

    可能的副本