gpt4 book ai didi

python - 当文件已存在时在管理面板中显示消息

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:17 25 4
gpt4 key购买 nike

我的问题是如何在 admin django (v 1.11) 中显示一条消息,说明要放入应用程序的文件存在这一事实。

我已经写好了代码,但它只能在模型中工作,即在控制台中你可以看到出现了ValidationError

class ImageModel(BaseImageModel):
desc = models.CharField(max_length=256, null=True, blank=True)

def save(self, *args, **kwargs):
self.has_all_mandatory_data = self._check_validity()
if ImageModel.objects.filter(original_filename=self.file).exists():
raise ValidationError('This image already exists.')
super(ImageModel, self).save(*args, **kwargs)

如何在管理中显示 messages.INFO("File already exists") 而不是 ValidationError

最佳答案

如果您在 save() 方法中引发 ValidationError,那么它应该可以工作(您在控制台中的体验),但默认情况下 Django 的管理员无法很好地处理此类服务器响应。

有一个解决方法,Django 的管理员可以很好地处理从模型的 clean() 方法之一引发的 ValidationError,参见 1.11:https://docs.djangoproject.com/en/1.11/ref/models/instances/#validating-objects .

因此,我建议在 Django 为我们提供的 clean() 方法之一中编写检查存在逻辑,而不是在 save() 方法中编写。

class ImageModel(BaseImageModel):
desc = models.CharField(max_length=256, null=True, blank=True)

def clean(self):
if ImageModel.objects.filter(original_filename=self.file).exists():
raise ValidationError('This image already exists.')

def save(self, *args, **kwargs):
try:
self.clean()
super(ImageModel, self).save(*args, **kwargs)
except ValidationError as e:
non_field_errors = e.message_dict[NON_FIELD_ERRORS]

关于python - 当文件已存在时在管理面板中显示消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54459829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com