调用模型的save()时自动验证
django-smart-save的Python项目详细描述
进行save调用full_clean。
您认为django模型save方法将验证所有字段吗 (即,在保存之前或任何时候调用full_clean)?错了!
当我不明白为什么的时候,我发现了这个可怕的事实 带有电子邮件字段的模型对象(没有blank=true)可以是 以空字符串保存为电子邮件地址。
更多信息:
- “为什么django的model.save()不调用full clean?“
- http://stackoverflow.com/questions/4441539/
- “模型文档意味着modelform将调用model.full_clean(),但它不会。”
- https://code.djangoproject.com/ticket/13100
安装
首先将应用程序添加到python路径。最简单的方法是 pip:
pip install django-smart-save
您应该下载源代码并运行:
$ python setup.py install
配置
确保安装了django.contrib.auth,并添加智能保存 应用程序到已安装的应用程序列表:
INSTALLED_APPS = ( ... 'django.contrib.auth', 'smart_save', )
您可以在项目设置中指定不同的方法名(默认值:如果有效,则保存):
SMART_SAVE_METHOD = ‘my_save’
使用概述
很简单:
>>> user = User(username="chris") >>> user.save_if_valid() True >>> user = User(username="") >>> user.save_if_valid() False >>> user._errors {'username': ['This field cannot be blank.']}
许可证
任何人都可以根据BSD的条款自由使用或修改本软件 执照。