【发布时间】:2021-03-04 13:25:19
【问题描述】:
我的 models.py 中有一个包含这两个字段的模型:
class Dummy(models.Model):
timestamp1 = models.DateTimeField()
timestamp2 = models.DateTimeField()
现在我想列出所有值,包括事实,如果时间戳 1 大于时间戳 2。我认为正确的方法是在 views.py 中使用annotate this,而不是在模板中弄清楚这一点。不幸的是,这不起作用:
from .models import Dummy
dummy = Dummy.objects.annotate(is_newer=timestamp1 > timestamp2)
我得到错误:
QuerySet.annotate() 收到非表达式:False。
好的,注释需要一个表达式,所以我尝试使用When:
from .models import Dummy
from django.db.models import When
dummy = Dummy.objects.annotate(is_newer=When(timestamp1__gt=timestamp2, then=True)
这会导致以下错误消息:
name 'timestamp2' is not defined
现在我没有想法了。我该怎么办?
【问题讨论】:
-
你必须使用 F() 表达式而不是 timestamp2 docs.djangoproject.com/en/3.1/ref/models/expressions/…
标签: django