blank=False,null=False not working in models code Django
1 2 3 4 5
| class Url(models.Model):
url=models.URLField(verify_exists=True,max_length=200,blank=False,null=False)
date=models.DateTimeField(auto_now_add=True)
count=models.IntegerField(default=0)
isspam=models.IntegerField(default=0) |
这是我的模型代码....当我创建一个不带参数的对象时..即使在写入 blank=False,null=False 之后,该对象也会被创建并保存到数据库中,并且 URL 也不会检查是否存在。如果我提供了一个死链接,它可以工作,但它不应该!
我的代码有什么问题?
相关查询:现在在 django 1.4 中,verify_exists 已被弃用...如何在 1.4 中检查验证?
- 更改后您是否重新创建了数据库?
-
@Rohan 是的,但问题仍然存在!
-
如果您正在编辑现有模型并运行 sync_db,它不会更新表。使用 south 或类似的来允许迁移。请参阅stackoverflow.com/questions/1115238/django-model-sync-table
-
您可以发布 python manage.py sqlall <your_app> 并检查这些字段不为空吗?
-
@Rohan:不用担心......我做到了......顺便说一句,我得到了关于如何通过 sqlall 和 dir(Url) 执行此操作的提示......有时我忘记了 dir 但它是一个救星.谢谢你的帮助 :)
如您所见,django 默认情况下不会在 save() 上验证模型,但是您的数据库在插入 NULL 值时应该会抛出错误,我会检查架构以确保。
使用 URLValidator
所以我通过将我的 \\'url\\' 修改为 url=models.URLField(verify_exists=True,max_length=200,default=None,blank=False,unique=True)
并通过 object.clean_fields() 验证它来工作。
如果你不使用有效值或空值,它会抛出类似这样的错误
1 2 3
| ValidationError: {'url': [u'This URL appears to be a broken link.'] }
ValidationError: {'url': [u'This field cannot be blank.'] } |