Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django防止视图中的文件重复_Django_Django Models_Django Forms_Django Views - Fatal编程技术网

Django防止视图中的文件重复

Django防止视图中的文件重复,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,我需要防止重复文件保存 在模型中执行此操作: def save(self, *args, **kwargs): f = self.file digest = Document.gen_digest(f) qs = Document.objects.filter(hash=digest).first() if qs is not None: self.file = qs.file super(Document, s

我需要防止重复文件保存

在模型中执行此操作:

  def save(self, *args, **kwargs):
      f = self.file
      digest = Document.gen_digest(f)
      qs = Document.objects.filter(hash=digest).first()
      if qs is not None:
          self.file = qs.file
      super(Document, self).save(*args, **kwargs)
我能找到解决办法。但我需要在有重复项时发送
消息<代码>消息
需要
请求
——因此我需要在
视图
中执行此操作

但在视图中调用此示例会创建具有不同名称的文件,这是默认行为

如何防止保存重复的
消息,并且在不覆盖
文件存储的情况下仍然伪造
消息

或者任何其他建议都会很好


谢谢。

由于您已经有了满足您要求的工作保存方法,我建议在其中引发异常,然后在您的视图中处理它:

def save(self, *args, **kwargs):
    f = self.file
    digest = Document.gen_digest(f)
    qs = Document.objects.filter(hash=digest)
    if not qs.exists():
        self.file = qs.file
    else:
        # May be some custom DuplicateFileError
        raise FileExistsError('Duplicate!!!')
    super(Document, self).save(*args, **kwargs)
然后在您的视图中,在除块中闪烁消息