11

我在多对多关系中有两个模型(事件和用户配置文件)。我只想选择那些关联的用户数量少于一定数量的事件。因此,应选择迄今为止注册人数少于 4 人的活动。

在 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)

我想我没有正确过滤每个事件的所有用户配置文件,但我不知道该怎么做。

你能帮我吗?

4

1 回答 1

14
Event.objects.annotate(c=Count('userprofile')).filter(c__lt=4)
于 2012-08-23T23:58:18.460 回答