Django之Transform和lookup类

发布时间:2019-08-28 12:00--阅读:269--评论:0条

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()的行为相同。

微信公众号ID(feiutech)

微信公众号ID:feiutech

评论列表

共0条评论

我要评论

用户名:
邮箱: