Фильтр запросов Django по количеству объектов ManyToMany

у меня есть две модели (Event и UserProfile) в отношении ManyToMany. Я хочу выбрать только те события, которые имеют меньше определенного количества пользователей, связанных с ними. Таким образом, должны быть выбраны события, в которых зарегистрировались менее 4 человек.

In views.py у меня есть что-то вроде этого, но это не работает:

proposed_event_list = Event.objects.all().filter(userprofile__lt=4)

соответствующие части models.py посмотрите, как:

class Event(models.Model):
    name = models.CharField(max_length=100)
    date = models.DateTimeField('Event date')

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    event_commitments = models.ManyToManyField(Event, null=True, blank=True)

Я думаю, что я неправильно фильтрую все Userprofiles на каждое событие, но я не знаю как это сделать.

вы можете помочь?

1 ответов


Event.objects.annotate(c=Count('userprofile')).filter(c__lt=4)