Я пытаюсь обновить набор экземпляров на основе текущих значений для экземпляра.
responses.update(
last_paused=now(),
duration=F('seconds_remaining')-(now() - F('last_accessed')).total_seconds()
)
Но я получаю эту ошибку:
Traceback (most recent call last):
File "/vagrant/Devel/env/lib/python3.5/site-packages/celery/app/trace.py", line 382, in trace_task
R = retval = fun(*args, **kwargs)
File "/vagrant/Devel/env/lib/python3.5/site-packages/celery/app/trace.py", line 641, in __protected_call__
return self.run(*args, **kwargs)
File "/vagrant/Devel/apps/assessments/tasks.py", line 101, in section_pause
duration=F('seconds_remaining')-(now() - F('last_accessed')).total_seconds()
AttributeError: 'CombinedExpression' object has no attribute 'total_seconds'
Я пытаюсь обойти обновление каждой строки отдельно.
Модель, в которую я пытаюсь сохранить, выглядит следующим образом:
class Response(models.Model):
exam_response = models.ForeignKey(ExamResponse)
section = models.ForeignKey(Section)
started = models.DateTimeField(default=now)
ended = models.DateTimeField(null=True)
seconds_remaining = models.PositiveIntegerField(default=0)
last_accessed = models.DateTimeField(default=now)
last_paused = models.DateTimeField(default=None, null=True)
С Postgres вы можете сделать что-то подобное, чтобы получить необходимое значение, но не знаете, как применить его в Django ORM.
select extract('epoch' from timestamp);