【发布时间】:2019-09-22 22:43:07
【问题描述】:
我正在使用 Django 和 Python 3.7。我想在更大查询的条件中包含一个子查询。
from django.db.models.functions import ExtractHour
...
hour_filter = ExtractHour(ExpressionWrapper(
F("article__created_on") + timedelta(0, avg_fp_time_in_seconds),
output_field=models.DateTimeField()
),
)
query = StatByHour.objects.filter(hour_of_day=OuterRef(hour_filter))
...
包含它的更大查询是
qset = ArticleStat.objects.filter( votes__gte=F("article__website__stats__total_score") / F(
"article__website__stats__num_articles") *
Subquery(query.values('index'), outout_field=FloatField()) *
day_of_week_index)
但是,当我运行它时,我得到了错误
'ExtractHour' object has no attribute 'split'
这是什么意思以及如何调整过滤器以消除此错误?
编辑:添加进行外部查询的事物的模型...
class ArticleStat(models.Model):
objects = ArticleStatManager()
article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='articlestats')
...
votes = models.FloatField(default=0, null=False)
【问题讨论】:
-
那么你为什么要把
ExtractHour包裹在OuterRef中?
标签: python sql django python-3.x model