2009-02-24 110 views
3

我有一个包含文本字段的Django模型。在管理GUI中,我想只能过滤包含此字段中文本的记录。可能吗?Django管理GUI可以过滤文本字段是否为空?

类似这样的代码将过滤文本字段的内容,但在过滤器中的“全部”和每个不同的条目上显示过滤器。我想过滤“全部”或“包含内容”。

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

class MyModelAdmin(admin.ModelAdmin): 
    list_display = ('...', 'textfield', '...') 
    list_filter = ('...', 'textfield', '...') 
+0

可能的复制http://stackoverflow.com/questions/7691890/filtering-django-admin-by-null-is - 不是空) – Chronial 2016-04-19 13:06:30

回答

6

是的,但它没有记录。查看django\contrib\admin\filterspecs.py以查看默认filterspecs是如何创建的以及如何创建自己的filterspec。此功能计划用于1.1版本,如果您想要尝试使用最新的HEAD修订版本中的功能,则已经有一个修补程序:http://code.djangoproject.com/ticket/5833

还没有记录的事实是,您可以将任意GET参数放在您的URL change_list页面来过滤结果。例如/admin/app/model/?field1__lte=5&field2__gte=10不幸的是?field__isnull=True将无法​​正常工作,但您可以轻松尝试以查看是否可以找到适用于您的案例的过滤器。

-2

号见http://docs.djangoproject.com/en/dev/ref/contrib/admin/#list-filter

设置list_filter激活过滤器在 管理员的变化列表 页面的右边栏。这应该是 字段名称列表,并且每个 指定的字段应该是 BooleanField,CharField,DateField, DateTimeField,IntegerField或 ForeignKey。

但是......

两件事情。

  1. 请务必为您的文本字段留空。

    类为MyModel(models.Model): #... 文本框= models.CharField(MAX_LENGTH = 100,空=真) #...

  2. 添加is_blank方法,以帮助处理。它不会过滤,但有帮助。

    高清is_blank(个体经营): 回报LEN(self.textfield)== 0