我有一些使用FileField和一堆验证器的模型
class VideoContent(models.Model):
file = models.FileField(upload_to='video_files', validators=[validate_file_extension, validate_file_size])
size = models.IntegerField(null=False)
有没有办法根据文件大小自动计算大小?
答案 0 :(得分:1)
您应该使用默认设置的FileField.size
属性。
您的文件大小验证程序应如下所示:
def validate_file_size(value):
if value.size > 1048576: # Larger than 1MB
raise ValidationError(u'%s file is too big' % value.name)
您还可以重写模型save()
以在保存对象时设置VideoContent.size
值:
class VideoContent(models.Model):
...
def save(self, *args, **kwargs):
self.size = self.file.size
super(VideoContent, self).save(*args, **kwargs)
self.size = self.file.size