使用HybridProperty组合和格式化日期和时间列

2024-06-16 10:24:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模型,其中有两列类型为Date和{}。我希望我的查询将这些列一起返回并格式化。我试过使用这样的hybrid_property

@hybrid_property
def mydate_and_mytime(self):
    return self.mydate.strftime("%Y-%m-%d") + " + " self.mytime.strftime("%H:%M")

但是,在属性中,self.mydate和{}的类型是InstrumentedAttribute,它没有strftime方法,因此会引发错误。在

如何使以下查询工作?在

^{pr2}$

Tags: and方法模型self类型datereturn属性
1条回答
网友
1楼 · 发布于 2024-06-16 10:24:46

除了简单的表达式,混合属性需要getter和表达式部分。利用内置函数组合日期和时间,然后格式化。在

from datetime import datetime
from sqlalchemy.ext.hybrid import hybrid_property


@hybrid_property
def mydate_and_mytime(self):
    combine = datetime.combine(self.mydate, self.mytime)
    return combine.strftime('%Y-%m-%d %H:%M')

@mydate_and_mytime.expression
def mydate_and_mytime(cls):
    # return a sqlalchemy expression based on the columns
    # uses MySQL timestamp and date_format functions
    combine = db.func.timestamp(cls.mydate, cls.mytime)
    return db.func.date_format(combine, '%Y-%m-%d %H:%i')

在我看来,为了比较实际的日期时间,格式应该留给属性之外的东西,但这是你的选择。在

相关问题 更多 >