2011-04-15 42 views
1

鑑於型號:Django查詢查找somefilefield == None的模型實例?

Person.objects.create(name='Brad') 
Person.objects.create(name='Tony') 

我如何寫使用ORM給我,沒有一個人resume查詢:

class Person(models.Model): 
    name = models.CharField(max_length=200) 
    resume = models.FileField(upload_to='resumes/', blank=True, null=True) 

我已經通過創建幾個人。我試過以下,但都未能返回期望的結果:

>>> Person.objects.filter(resume=None) 
[] 
>>> Person.objects.filter(resume__exact=None) 
[] 
>>> Person.objects.filter(resume__isnull=True) 
[] 
+1

Dup的:http://stackoverflow.com/questions/844556/django-filter-how-do-i-go-about-filtering-for-emply-or-null-names-in- a-queryse – XORcist 2011-04-15 05:14:51

+1

這不是重複的,它們是不同的問題。 – 2011-04-15 05:19:23

+1

這似乎是一個不同的問題,因爲它處理的FileField需要不同的解決方案,因爲它們是CharFields。這是很好的信息。另一個問題不討論這種情況。 – DTing 2011-04-15 05:35:45

回答

1

我敢肯定,你過濾空字符串''

Person.objects.filter(resume='') 

docs for Filefield所述,底層字段爲CharField()

Django將CharFields的空白存儲爲空字符串,而不是NULL,因此對空字符串進行過濾可以讓您獲得沒有簡歷的人員。

Model Field References regarding Null

+0

謝謝,這對我很有用。將'FileField' *永遠*爲'None'? – 2011-04-15 05:18:00

+0

查看博客文章['here'](http://www.b-list.org/weblog/2006/jun/28/django-tips-difference-between-blank-and-null/) – DTing 2011-04-15 05:19:16

+0

文檔對於'FileField'不提及任何關於必須檢查一個空字符串而不是'None'的事情,並且這個博客文章也沒有。 – 2011-04-15 05:23:16