我有以下模型:
class Assignment(models.Model):
extra_days = models.IntegerField(default=0)
due_date = models.DateTimeField()
哪里due_date
是作业的截止日期,extra_days
是在截止日期后完成作业的额外天数。
我想创建一个查询,返回due_date + extra_days
大于当前日期的所有行。这就是我正在做的事情:
from django.utils import timezone
from django.db.models import F
from datetime import datetime
cur_date = timezone.make_aware(datetime.now(), timezone.get_default_timezone())
a = Assignment.objects.filter(extra_days__gt=cur_date - F('due_date'))
当我打印a
时,我收到以下错误:
File "c:\Python27\lib\site-packages\MySQLdb\cursors.py", line 204, in execute
if not self._defer_warnings: self._warning_check()
File "c:\Python27\lib\site-packages\MySQLdb\cursors.py", line 117, in _warning
_check
warn(w[-1], self.Warning, 3)
Warning: Truncated incorrect DOUBLE value: '2013-09-01 02:54:31'
如果我做了一个导致 3.1 天的时差,我假设天差仍然是 3。我认为做这样的事情会更正确:
a = Assignment.objects.filter(due_date__gt=cur_date - timedelta(days=F('extra_days')))
但这也会导致错误。
在不编写原始 SQL 查询的情况下如何做到这一点?