Django 1.11.6校验和计算表格验证后:如何通知用户有错误
我正在开发文档存档。所以,我计算校验和以控制文档仍然存在,它们没有损坏等。
另一方面是我可以控制文件是否已经上传。重要的是:不需要复制文件。
我通过Django admin上传文件。有一张表格准备好了。 但问题是:表单验证器在这里似乎不是很有用。 至少我不能发明如何在这里使用表单验证器。
但post_save信号很有用:在这里我们有一个文件已经上传。我们计算文件的校验和(使用md5)。
但是,如果unique = True表示校验和,则IntegrityError升高。
这是好的和可预测的。但是,你能帮我理解如何通知用户吗?任何方法都可以。这仅仅是我们的员工:不需要组织一个精彩的html布局。但重要的是要显示上传的文件与具有以下id的现有文件一致。
你能帮我解决吗?
models.py
class FileChecksum(models.Model):
checksum = models.CharField(blank=True,
null=False,
unique=True,
max_length=255,
verbose_name=_("checksum"))
def __str__(self):
return self.checksum
class Image(models.Model):
file = models.ImageField(blank=False,
verbose_name=_("Image"),
max_length=255,
upload_to=get_sheet_path)
file_checksum = models.OneToOneField(FileChecksum,
blank=True,
null=True)
@property
def checksum(self):
pass
@checksum.setter
def checksum(self, new_checksum):
pass
signals.py
@receiver(post_save, sender=Image)
def save_file_checksum(sender, instance, **kwargs):
new_checksum = get_checksum(instance.file.path)
instance.checksum = new_checksum
admin.py
class ImageForm(FileMixin,
ModelForm):
model = Image
class ImageAdmin(admin.ModelAdmin):
form = ImageForm
admin.site.register(Image, ImageAdmin)
也许你可以尝试使用电子邮件通知? – neverwalkaloner
有时需要几分钟才能发送电子邮件。那么,延迟发生。分钟可以总结为几个小时。而且根本不能保证邮件的传递。这不是笨拙吗?用户可能不喜欢它。 – Michael