gpt4 book ai didi

Django 模型验证不起作用

转载 作者:行者123 更新时间:2023-12-04 02:53:30 32 4
gpt4 key购买 nike

我有以下模型:

class CardInfo(models.Model):
custid = models.CharField(max_length=30, db_index=True, primary_key = True)
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
street = models.CharField(max_length=100)
building = models.CharField(max_length=100)
city = models.CharField(max_length=100)
state = models.CharField(max_length=100)
zipcode = models.CharField(max_length=100)
payment_method = models.CharField(max_length=100, null=True, blank=True)
amount = models.CharField(default = '0',max_length=10, null=True, blank=True)
valid_to_month = models.CharField(max_length=100, null=True, blank=True)
valid_to_year = models.CharField(max_length=100, null=True, blank=True)
def __unicode__(self):
return "Cust ID %s" %(self.custid)

在 shell 中,当我给出 full_clean 时,我得到验证错误,但在保存时它会被保存而不是抛出错误。为什么会这样?我正在使用 django1.3 和 python 2.6:
c=CardInfo(custid="Asasasas")
c.full_clean()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/python2.6/lib/python2.6/site-packages/django/db/models/base.py", line 828, in full_clean
raise ValidationError(errors)
ValidationError: {'building': [u'This field cannot be blank.'], 'city': [u'This field cannot be blank.'], 'first_name': [u'This field cannot be blank.'], 'last_name': [u'This field cannot be blank.'], 'zipcode': [u'This field cannot be blank.'], 'state': [u'This field cannot be blank.'], 'street': [u'This field cannot be blank.']}
c.save()

最佳答案

文档是 explicit about this :

Note that validators will not be run automatically when you save a model, but if you are using a ModelForm, it will run your validators on any fields that are included in your form.



如果您不使用表单,则有责任在保存之前调用 clean 方法。

可以像这样强制调用模型验证器:
model_instance.full_clean()

关于Django 模型验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11789390/

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