私は次のモデルを持っています:
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 クエリを作成せずにこれを行うにはどうすればよいですか?