2012-01-13 18 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