前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django之Transform和lookup类

Django之Transform和lookup类

作者头像
菲宇
发布2019-08-14 10:47:58
7410
发布2019-08-14 10:47:58
举报
文章被收录于专栏:菲宇菲宇

Transform类参考

Transform是用于实现字段转换的通用类。一个显然的例子是__year会把DateField转换为IntegerField。 在表达式中执行查找的标记是Transform<expression>__<transformation> (例如 date__year)。 这个类遵循查询表达式API,也就是说你可以使用 <expression>__<transform1>__<transform2>。 bilateral 一个布尔值,表明是否对lhs和 rhs都应用这个转换。如果对两侧都应用转换,应用在rhs的顺序和在查找表达式中的出现顺序相同。默认这个属性为False。使用方法的实例请见自定义查找。 lhs 在左边,也就是被转换的东西。必须遵循查询表达式API。 lookup_name 查找的名称,用于在解析查询表达式的时候识别它。 output_field 为这个类定义转换后的输出。必须为Field的实例。默认情况下和lhs.output_field相同。 as_sql() 需要被覆写;否则抛出NotImplementedError异常。 get_lookup(lookup_name) 和get_lookup()相同。 get_transform(transform_name) 和get_transform()相同。 Lookup 类参考 Lookup是实现查找的通用的类。查找是一个查询表达式,它的左边是lhs,右边是rhs;lookup_name用于构造lhs和rhs之间的比较,来产生布尔值,例如lhs in rhs或者lhs > rhs。 在表达式中执行查找的标记是<lhs>__<lookup_name>=<rhs>。 这个类并不遵循查询表达式API,因为在它构造的时候出现了=<rhs>:查找总是在查找表达式的最后。 lhs 在左边,也就是被查找的东西。这个对象必须遵循查询表达式API。 rhs 在右边,也就是用来和lhs比较的东西。它可以是个简单的值,也可以是在SQL中编译的一些东西,比如 F() 对象或者QuerySet。 lookup_name 查找的名称,用于在解析查询表达式的时候识别它。 process_lhs(compiler, connection[, lhs=None]) 返回元组(lhs_string, lhs_params),和compiler.compile(lhs)所返回的一样。这个方法可以被覆写,来调整lhs的处理方式。 compiler是一个SQLCompiler对象,可以像 compiler.compile(lhs)这样使用来编译lhs。connection可以用于编译供应商特定的SQL语句。lhs如果不为None, 会代替self.lhs作为处理后的lhs使用。 process_rhs(compiler, connection) 对于右边的东西,和process_lhs()的行为相同。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年08月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档