Django之Transform和lookup类

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菲宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值