Группировать по дням, а затем снова группировать по пользователю, чтобы получить список объекта или идентификатора объекта - PullRequest
0 голосов
/ 07 мая 2018
class Ticket(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    booked_at = models.DateTimeField(default=timezone.now)
    bought = models.BooleanField(default=False)

Я бы хотел сгруппировать билеты по забронированному дню, а затем снова сгруппировать список заявок на каждый день по пользователю (администратору / клиенту), т. Е. Пользователю is_admin или нет, наконец, чтобы получить список билетов или идентификатор билета.

[
    {
        'day': datetime.datetime(2018, 5, 6, 0, 0, ...), 
        'booked_by_admin': [1, 2, 5],
        'booked_by_customer': [3, 4]
    }, 
    {
        'day': datetime.datetime(2018, 5, 7, 0, 0, ...), 
        'booked_by_admin': [11, 12, 16],
        'booked_by_customer': [10, 13, 14, 15]
    }
]

Я мог бы сгруппировать билеты по дням таким образом,

Ticket.objects.filter(bought=True).annotate(day=TruncDay('booked_at')).values('day').annotate(c=Count('id')).order_by()

Но я не могу понять, как снова сгруппировать его по администраторам и не администраторам, чтобы получить список объектов заявок. Не могли бы вы мне помочь, пожалуйста.

...