Django 模型层中实例方法要点

从数据库更新对象
Model.refresh_from_db(using=None, fields=None, **kwargs)
New in Django 1.8.
如果你需要从数据库重新加载模型的一个值,你可以使用 refresh_from_db() 方法。当不带参数调用这个方法时,将完成以下的动作:
模型的所有非延迟字段都更新成数据库中的当前值。
之前加载的关联实例,如果关联的值不再合法,将从重新加载的实例中删除。


验证对象
验证一个模型涉及三个步骤:


验证模型的字段 —— Model.clean_fields()
验证模型的完整性 —— Model.clean()
验证模型的唯一性 —— Model.validate_unique()
当你调用模型的full_clean() 方法时,这三个方法都将执行。
当你使用ModelForm时,is_valid() 将为表单中的所有字段执行这些验证。更多信息参见ModelForm 文档。 
如果你计划自己处理验证出现的错误,或者你已经将需要验证的字段从ModelForm 中去除掉,你只需调用模型的full_clean() 方法。
Model.full_clean(exclude=None, validate_unique=True)


该方法按顺序调用Model.clean_fields()、Model.clean() 和Model.validate_unique()(如果validate_unique 为True),
并引发一个ValidationError,该异常的message_dict 属性包含三个步骤的所有错误。
可选的exclude 参数用来提供一个可以从验证和清除中排除的字段名称的列表。ModelForm 使用这个参数
来排除表单中没有出现的字段,使它们不需要验证,因为用户无法修正这些字段的错误。


自增的主键
如果模型具有一个AutoField —— 一个自增的主键 —— 那么该自增的值将在第一次调用对象的save() 时计算并保存:
在调用save() 之前无法知道ID 的值,因为这个值是通过数据库而不是Django 计算。
为了方便,默认情况下每个模型都有一个AutoField 叫做id,除非你显式指定模型某个字段的 primary_key=True。


pk 属性
Model.pk


无论你是自己定义还是让Django 为你提供一个主键字段, 每个模型都将具有一个属性叫做pk。它的行为类似模型的一个普通属性,
但实际上是模型主键字段属性的别名。你可以读取并设置它的值,就和其它属性一样,它会更新模型中正确的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值