我有一个带有可选文件字段的模型
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
如何检查是否有文件集?
3条答案
按热度按时间ojsjcaue1#
此外,当没有文件时,
FileField
的布尔值将为False:bool(test.sound) == False
当test.sound.name
是假的。4c8rllxm2#
在Django中,当你定义一个可选的文件字段,比如sound = models.FileField(upload_to ='audio/',blank=True),这个字段可以是空的(也就是说,不与任何文件相关联),但它不是None。相反,它是FieldFile类的示例。当您创建MyModel的示例而没有为声场指定文件时,它将使用空FieldFile对象进行初始化。这就是为什么在打印test. sound时会看到。要检查是否为字段设置了文件,可以使用FieldFile的bool()方法。下面是一个例子:
Python
FieldFile的bool()方法在没有文件与字段关联时返回False,否则返回True。因此,您可以使用bool(test.sound)来确定是否为模型示例中的声场设置了文件。
fsi0uk1n3#
根据这个answer从一个不同的问题,你可以试试这个: