【发布时间】:2020-01-04 03:20:58
【问题描述】:
我正在使用 Django 和 Python 3.7。我正在编写要在 PostGres 9.4 db 上运行的 Django 查询,但无法弄清楚如何形成我的表达式包装器,以便将秒数(整数)添加到现有日期列。我尝试了以下
hour_filter = ExtractHour(ExpressionWrapper(
F("article__created_on") + timedelta(0,
F("article__websitet__avg_time_in_seconds_to_reach_ep")),
output_field=models.DateTimeField)
),
)
但我得到了错误
unsupported type for timedelta seconds component: F
有什么想法可以重写我的 ExpressionWrapper 以在 PostGres 查询中进行日期数学运算吗?
编辑;这里是模型和相关字段...
class Website(models.Model):
...
avg_time_in_seconds_to_reach_ep = models.FloatField(default=0, null=True)
class Article(models.Model):
objects = ArticleManager()
website = models.ForeignKey(Website, on_delete=models.CASCADE, related_name='articlesite')
【问题讨论】:
-
您是否尝试过将
F(...)表达式返回的值转换为int或float?例如:... + timedelta(0, int(F("article_websitet__avg_time_in_seconds_to_reach_ep")), ... -
@Dave 你能告诉我们相关的模型吗?
-
@Caleb,我编辑了我的问题以包括模型及其相关字段。
标签: django python-3.x postgresql datetime