model.CharField('blank = False')是否与save()一起使用?

Joh*_*Mee 6 django django-models

我有一个像Django 1.1这样的模型:

class Booking(models.Model):
  name = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)

默认情况下,我读到'null'和'blank'都是False.

所以通过这样的测试......

class SimpleTest(TestCase):
    def test_booking_save(self):
        b = Booking()
        b.save()
Run Code Online (Sandbox Code Playgroud)

...我希望保存会抛出异常.但事实并非如此.创建一个空白名称的新记录(Postgres和SQLite3)似乎很高兴.

我注意到,通过管理界面,保存确实失败,并且"需要此字段".

问题是:

  1. "空白"属性仅由表单应用吗?
  2. 修复是否覆盖save()方法并显式检查len(名称)!= 0?
  3. 我误解了曾经理解的东西可以解决我的误解吗?

Car*_*yer 5

更新:请参阅最近的Django版本中的模型验证文档.

原始答案:blank = True/False仅适用于表格.数据验证目前仅在表单级别进行; 当模型验证Google Summer of Code工作合并到trunk 时,这将发生变化.

目前在模型层发生的唯一一种验证是数据库后端如果无法处理它所得到的任何错误.在空CharField的情况下,您通常不会从数据库中获取错误,因为Django默认情况下将字段设置为空字符串.

现在,您应该使用save()方法进行所需的任何模型级验证.很快(如果你在主干上)或1.2出来时,使用模型验证的东西.