gpt4 book ai didi

django - 在 Django 管理站点中显示自定义模型验证异常

转载 作者:行者123 更新时间:2023-12-03 12:10:06 25 4
gpt4 key购买 nike

我有一个预订模型,需要检查被预订的元素是否可用。我想让背后的逻辑确定该项目是否集中可用,以便无论我在哪里保存实例,此代码都会验证它是否可以保存。

目前,我在我的模型类的自定义保存函数中有此代码:

def save(self):
if self.is_available(): # my custom check availability function
super(MyObj, self).save()
else:
# this is the bit I'm stuck with..
raise forms.ValidationError('Item already booked for those dates')

这工作正常 - 如果项目不可用,则会引发错误,并且我的项目未保存。我可以从前端表单代码中捕获异常,但是 Django 管理站点呢?如何让我的异常像管理站点中的任何其他验证错误一样显示?

最佳答案

在 django 1.2 中,添加了模型验证。
您现在可以向引发 ValidationError 异常的模型添加一个“clean”方法,并且在使用 django admin 时会自动调用它。clean()方法在使用 django admin 时被调用,但未在 save() 上调用.

If you need to use the clean() method outside of the admin, you will need to explicitly call clean() yourself.


http://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#validating-objects
所以你的清洁方法可能是这样的:
from django.core.exceptions import ValidationError

class MyModel(models.Model):

def is_available(self):
#do check here
return result

def clean(self):
if not self.is_available():
raise ValidationError('Item already booked for those dates')
我没有广泛使用它,但似乎比创建一个 ModelForm 的代码少得多,然后在 admin.py 文件中链接该表单以在 django admin 中使用。

关于django - 在 Django 管理站点中显示自定义模型验证异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2177720/

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