У меня есть модель документа, и администратор может загрузить изображение в FileField. Когда документ / изображение успешно загружено, я также сохраняю sha256 «отпечаток» изображения, чтобы проверить, пытается ли администратор загрузить дублированное изображение. Если обнаружено дублированное изображение, я не сохраняю дублированное изображение и не отображаю сообщение об ошибке администратору через структуру сообщений. Однако я также получаю сообщение об успешной загрузке документа. Как я могу предотвратить это?
Мой код в сокращенной форме:
class Document(Model):
document_id = models.AutoField(primary_key=True)
computed_sha256 = models.CharField(editable=False, max_length=64, default="foobar")
storage_file_name = models.FileField('File name', upload_to=settings.DOCUMENT_FOLDER_ORIGINALS, default=settings.DEFAULT_IMAGE_XXXLARGE_PATH,)
class DocumentAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
if form.is_valid():
if not change:
# Uploading one or more images
files = request.FILES.getlist('storage_file_name')
if files:
for f in files:
# Check if this file has been uploaded before by checking the fingerprint
_file = form.cleaned_data["storage_file_name"]
sha256 = image_processing_utils.compute_sha256(_file)
duplicate_files = Document.objects.filter(computed_sha256 = sha256)
if len(duplicate_files) > 0:
messages.add_message(request, messages.WARNING, 'Uploading a duplicate of "%s" and it will not be saved' % f.name)
break;
# more image processing stuff
else:
# some more image processing stuff
obj.metadata = form.cleaned_data['metadata']
super().save_model(request, obj, form, change)
Полученная страница администратора с двумя сообщениями, когда я пытаюсь загрузить дублированное изображение:
Я не уверен, где Django добавляет положительное сообщение о том, что изображение было загружено правильно. Как мне go удалить его и просто отобразить сообщение о том, что дублированное изображение не было загружено?
Спасибо!
Отметить