2012-01-13 31 views
38

Tôi có một mô hình với một lĩnh vực tập tin tùy chọnDjango - FileField kiểm tra nếu Không

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

Hãy đặt một giá trị

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

Tại sao tôi nhận được rằng?

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

Làm thế nào tôi có thể kiểm tra nếu có một tập tin thiết lập?

Trả lời

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

Ngoài ra, giá trị boolean FieldFile 's sẽ là False khi không có file: bool(test.sound) == False khi test.sound.name là falsy.

+0

Giá trị boolean nào? Bạn có nghĩa là 'test.sound là False'? –

+0

Không phải 'is' - test.sound sẽ không có cùng một định danh như' Sai'. Tuy nhiên, 'if test.sound: print" yes "', 'else: print" no "' sẽ in không. 'bool (test.sound)' phải là 'False'. – AdamKG

+11

+1: 'bool (fieldFile)' là 'False' khi' fieldFile.name' bị lỗi. – DzinX

Các vấn đề liên quan