我的提案模型定義如下:F()的表達和timedelta從F()的表達產生的薩姆
class Proposal(models.Model):
scheduled_time = models.DateTimeField()
duration = models.IntegerField() # stores minutes as an integer
# (extra fields clipped for brevity's sake)
欲註釋每個提議對象,給它一個「結束」日期時間通過SCHEDULED_TIME計算+持續時間的timedelta表示,例如timedelta(minutes=duration)
。但是,F()表達式似乎不適合作爲timedelta()
的參數。
>>> from datetime import timedelta
>>> from django.db.models import F
>>> from schedule.models import Proposal
>>>
>>> proposals = Proposal.objects.all()
>>> annotated = proposals.annotate(
... end=F('scheduled_time')+timedelta(minutes=F('duration')))
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: unsupported type for timedelta minutes component: F
>>>
這種事情可能使用annotate()
和F()表達式嗎?
編輯:註釋的目的是能夠過濾/排除計算的結束時間。
貌似'F( '持續時間')'不返回數..( ?) – Qiau 2012-08-06 21:18:50