Django - Как сделать аннотацию с подсчетом связанных элементов модели
У меня есть эти модели:
class Gym(models.Model):
name = models.CharField()
class Employee(models.Model):
name = models.CharField()
gym = models.ForeignKey(Gym)
class Appointment(models.Model):
time = models.DateTimeField()
gym = models.ForeignKey(Gym)
class AppointmentItem:
name = models.CharField()
employee = models.ForeignKey(Employee)
appointment = models.ForeignKey(Appointment)
Я хочу получить список сотрудников салона по количеству назначенных встреч. Как я могу это сделать?
@Chalist мало думает:
Первый:
class AppointmentItem:
не объявлен как модель, не уверен, была ли это опечатка в вопросе, но в любом случае имена полей неверны. appointment_item
должно быть appointmentitem
, а фильтр должен быть appointmentitem__appointment__time__gte
, поскольку вы ищете время appointment
для этого appointmentitem
.
Employee.objects
.filter(gym_id=1,appointmentitem__appointment__time__gte='2020-07-01')
.annotate(item_count=Count('appointmentitems'))