【发布时间】:2017-08-31 16:16:04
【问题描述】:
如果我有一个在更新时更改名称的页面,我会尝试阻止模型保存。理想情况下,我会使用 clean 方法并引发验证错误:
def clean (self):
// if the name of the page has changed
raise ValidationError({'name':'Sorry you cannot change this'})
但是,我无法获取原始名称以将其与新实例名称进行比较(可以吗?)
然后我尝试使用信号来获取原始名称
@receiver(pre_save, sender=Page)
def prevent_save_if_name_same(sender,**kwargs):
instance = kwargs.get('instance')
old_model = sender.objects.get(pk=instance.id)
if old_model.name == instance.name:
// i would like to raise a validation error
但是,我无法从将传播到模型 save() 方法的信号中引发 ValidationError。当我尝试这个时,我得到了 Django 调试页面 - 而不是您所期望的名称字段旁边的错误显示。
非常感谢任何帮助!
【问题讨论】:
标签: django