ORM调用mysql库函数,实现时间+天数
时间字段天数字段计算后时间调用数据库DATE_ADD构建ORM可使用的公共方法class DateAdd(Func): function DATE_ADD def __init__(self, expression, bufferday1, **extra): self.template %(function)s(%(expressions)s, INTERVAL {} DAY).format(bufferday) super(DateAdd, self).__init__(expression, **extra) 上面方法不可行使用下面的方法 class DateAdd(Func): 自定义 DATE_ADD 函数用法 DateAdd(expression, bufferday) - expression: 日期字段或表达式 - bufferday: 要增加的天数可以是整数常量或 F(相关字段) function DATE_ADD def __init__(self, expression, bufferday1, **extra): # 将日期表达式和天数表达式都作为位置参数传入 expressions [expression, bufferday] super(DateAdd, self).__init__(*expressions, **extra) def as_sql(self, compiler, connection, functionNone, templateNone): # 编译两个子表达式 sqls, params [], [] for expr in self.source_expressions: sql, param compiler.compile(expr) sqls.append(sql) params.extend(param) # 使用函数名允许自定义构建最终 SQL function function or self.function sql {}({}, INTERVAL {} DAY).format(function, sqls[0], sqls[1]) return sql, params如何在orm中使用公共方法obj_query Model.objects.annotate( DueDateDateAdd( F(Date), F(days), output_fieldDateField() ) ).values(DueDate)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2558545.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!