【发布时间】:2020-09-17 10:00:41
【问题描述】:
如何为models.FileField() 设置默认文件?
class MyModel(models.Model):
myfile = models.FileField(upload_to='mydocs', default=???)
答案似乎是:
myfile=models.FileField(upload_to='mydocs', default='mydocs/myfile.pdf')
但是,这不会在创建新对象时产生预期的行为。
而对于CharField 等其他字段,default= 值作为小部件值显示在新表单上。但是对于 FileField 它不是,它仍然导致“没有选择文件”:
那么如何设置默认值?我们应该尝试创建一个新的 FieldFile 实例吗?我们需要创建一个文件对象吗?
【问题讨论】:
-
如果存储在
mydocs中,默认应该是mydocs/myfile.pdf。 -
如果您不想在
ModelForms 中将blank=True设为默认值,您还应该设置它。 -
@WillemVanOnsem 谢谢,是的,它应该是'mydocs/myfile.pdf`,错字编辑
-
@WillemVanOnsem,我想加载
myfile.pdf作为表单中建议的初始文件对象(用户可以覆盖),所以blank=False, null=False是否正确? -
blank=True表示用户不需要在表单中添加文件,而不是在空字符串上设置。所以blank=True但是null=False是的。
标签: django django-models