2009-02-24 115 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