2013-12-21 56 views
0

的大小,我有一些模型的FileField和一堆驗證的IntegerField自動設置的FileField

class VideoContent(models.Model): 
    file = models.FileField(upload_to='video_files', validators=[validate_file_extension, validate_file_size]) 
    size = models.IntegerField(null=False) 

有沒有什麼辦法讓大小取決於文件的大小自動計算?

回答

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