如何在Django中重写save方法并引发可被Admin界面捕获的错误?
我有点困惑,找不到我想要的东西在Django的文档里...
我想做的是重写一个模型的保存方法。我希望它能检查一组特定的条件——如果这些条件满足,它就能正常创建对象;但如果条件不满足,我想抛出一个错误。最重要的是,我大部分时间是在使用管理界面,所以这个错误不是我自己能捕捉到的,而是需要管理界面来捕捉并显示给用户。
我该怎么做呢?有没有我遗漏的文档需要阅读?哦,对了,我使用的是Django 1.1,因此不能重写Django 1.2引入的clean / full_clean方法。
谢谢!
肖恩
2 个回答
1
我想要检查一组特定的条件——如果这些条件满足了,就可以正常创建对象;但如果条件不满足,我想要抛出一个错误。
这就是ModelForm的用途。
http://docs.djangoproject.com/en/dev/topics/forms/modelforms/
1
我不是百分之百确定,但我觉得你可以在模型的save()方法里抛出一个ValueError或者django.forms.ValidationError。
def save(self):
if yourvalidation:
super(Model, self).save() #call super to actually do save
else:
raise #either ValueError or ValidationException
再说一次,我不确定这在1.1版本是否有效……不过这是我会尝试的做法。