2012-01-13 11 views
38

tengo un modelo con un campo de archivo opcionalDjango - cheque FileField Si ninguno

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

Pongamos un valor

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

¿Por qué tengo que?

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

¿Cómo puedo comprobar si existe un archivo de conjunto?

Respuesta

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

Además, valor booleano FieldFile 's será falso cuando no hay archivo: bool(test.sound) == Falsetest.sound.name cuando es Falsy.

+0

¿Qué valor booleano? ¿Quieres decir 'test.sound is False'? –

+0

Not 'is' - test.sound no tendrá la misma identidad que' False'. Sin embargo, 'if test.sound: print" yes "', 'else: print" no "' debería imprimir no. 'bool (test.sound)' debería ser 'False'. – AdamKG

+11

+1: 'bool (fieldFile)' es 'False' cuando' fieldFile.name' es falso. – DzinX

Cuestiones relacionadas