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
    评论
好的,关于Django模型、视图和模板,我可以做个简单的介绍: Django是一个MVC框架,其中的M、V、C分别指的是模型层、视图层和控制器层(其中控制器层在Django中对应的是URLconf),而这里的MVC与传统的MVC有所不同,更倾向于MVT的架构,即模型层(Model)、视图层(View)和模板层(Template)。 - 模型Model):模型层主要是把应用中需要用到的数据以类似面向对象的方式进行定义、管理和操作,通常对应database中的表。Django中的ORM(Object-relational mapping)对开发者屏蔽了底层的SQL操作,开发者可以直接以Python语言去操作数据库,而不需要关心底层SQL的实现细节。 - 视图(View):视图层最主要的作用是处理用户的请求,响应相应的结果给用户。一般来说,视图会从数据库、缓存等数据源中获取数据,然后将结果进行组装,返回HttpResponse给用户。Django中视图可以通过函数或者类的方式来定义,对外提供一个可被URLconf调用的可调用对象。 - 模板(Template):模板是视图层生成响应结果的主要组成部分,可以理解为一个动态生成的HTML页面,其中包含了数据展示、控制逻辑、页面渲染等元素。Django中的模板提供了超过100个内置的指令和过滤器,开发者可以非常方便的实现模板的渲染和页面的实现。 总结一下,模型层主要和数据打交道,视图层主要和操作和生成Http Response联系在一起,模板层主要负责页面的渲染和数据展示。希望这个介绍可以帮到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值