【问题标题】:How to check if FileField was uploaded?如何检查 FileField 是否已上传?
【发布时间】:2022-01-21 03:36:21
【问题描述】:

我想存储上传的“原始”文件名。这是因为文件以 uuid 作为新名称存储。所以我为我的模型写了这个:

 def save(self, *args, **kwargs):
         if self.file:
             self.original_filename = self.file.name
         super(MediaFile, self).save(*args,**kwargs)

但是,当没有上传任何新内容时,它也会将文件名存储到 self.original_filename。因此 original_filename 在我第二次保存此模型时成为 uuid(例如更新管理员中的其他字段)。

如果 FileField 真的更新并且文件已经上传,如何检查保存功能?如果可能的话,我想在模型中执行此检查,以便 mit 对管理和自定义上传页面都有效。

【问题讨论】:

    标签: django django-models django-file-upload django-uploads


    【解决方案1】:

    您可以调整__init__方法来存储原始文件。这允许您在 save() 方法中检索原始文件并将其与新文件进行比较。

            __original_file = None
    
            def __init__(self, *args, **kwargs):
                super().__init__(*args, **kwargs)
                self.__original_file = self.file
    
            def save(self, *args, **kwargs):
                if self.file:
                    if self.file != self.__original_file:
                        self.original_filename = self.file.name
    
                super(MediaFile, self).save(*args,**kwargs)
                self.__original_file = self.file
    

    【讨论】:

      猜你喜欢
      • 2012-02-09
      • 2010-12-10
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      相关资源
      最近更新 更多