LINUX.ORG.RU

Значение по умолчанию в ExpressionWrapper

 , ,


0

2

У меня есть такая модель, описывающая сессию игрока на сервере:

class Player_server_session(models.Model):
    player = models.ForeignKey(Player)
    server = models.ForeignKey(Server)
    connect_timestamp = models.DateTimeField()
    disconnect_timestamp = models.DateTimeField(null=True)
Если disconnect_timestamp null, значит сессия еще не закрыта, то есть игрок до сих пор на сервере. Я хочу составить топ игроков, проводящих на сервере больше всего времени:
Player_server_session.objects.values('player').annotate(duration = Sum(ExpressionWrapper(F('disconnect_timestamp') - F('connect_timestamp'), output_field=TimeField()))).order_by('-duration')
Это работает только для закрытых сессий. Каким образом мне покрыть случаи, когда disconnect_timestamp равен null и его нужно принять за текущее время? То есть что-то вроде F('disconnect_timestamp', default=timezone.now()).


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.