2012-01-13 56 views
38

我有一个模型,一个可选的文件场Django的 - 的FileField检查,如果无

class MyModel(models.Model): 
    name = models.CharField(max_length=50) 
    sound = models.FileField(upload_to='audio/', blank=True) 

让我们把一个值

>>> test = MyModel(name='machin') 
>>> test.save() 

为什么我明白了吗?

>>> test.sound 
<FieldFile: None> 
>>> test.sound is None 
False 

如何检查是否有文件集? bool(test.sound) == Falsetest.sound.name是falsy:

回答

54
if test.sound.name: print "I have a sound file" 
else: print "no sound" 

另外,当没有文件FieldFile的布尔值是假。

+0

哪个布尔值?你的意思是'test.sound是False'? – 2012-01-13 12:32:12

+0

不是''' - test.sound不会与'False'具有相同的标识。但是,如果test.sound:print是yes,'else:print“no”'应该打印否。 'bool(test.sound)'应该是'False'。 – AdamKG 2012-01-13 12:33:50

+11

+1:'fieldFile.name'为falsy时,'bool(fieldFile)'为'False'。 – DzinX 2012-01-13 12:35:18