2011-04-15 38 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