编辑:我在3-4周后再次尝试了这个,我没有再遇到这个问题。我不知道为什么。当我第一次遇到这个问题时,我很惊讶Django没有抛出任何NOT NULL约束。但现在,当我在3-4周后再次尝试它时,它运行正常。我不确定原因。
无论如何,这个问题不再有效。
我是Django新手。
我的模型有一个类,其中有几个字段被定义为NOT NULL。
class Post(models.Model):
title = models.CharField(max_length=60)
create_date=models.DateField(verbose_name='created Date')
当我转到命令行(通过manage.py shell),并通过执行以下操作创建一个新的Post实例时,Django将条目保存到数据库:
p=Post(title='test')
p.save()
为什么它不会像我在Admin面板中尝试相同时那样抛出错误?
答案 0 :(得分:2)
几个问题
我还没有机会尝试使用此代码,但这是我猜测发生了什么。
django管理员正在使用表单验证来阻止您保存并向您提供错误。
当你使用shell时,模型没有验证,所以它允许你保存,它依靠数据库来捕获可空数据的问题。我的猜测是你的数据库允许这个值为null并且没有抛出错误,因此它允许你保存没有问题。
在Django 1.2中,他们添加了与表单验证器类似的模型验证器,请查看此链接以获取更多信息。
http://docs.djangoproject.com/en/1.2/ref/models/instances/#validating-objects
我再一次在这里猜测,因为我不知道上述问题的答案。如果你能得到我的答案,我应该能给你一个更好的答案。