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)
然后在您的视图中,在除块中闪烁消息