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