11

ManyToMany 関係に 2 つのモデル (Event と UserProfile) があります。関連付けられているユーザーが一定数未満のイベントだけを選択したいと考えています。そのため、これまでに申し込んだ人数が 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 に答える