在Django queryset

时间:2018-05-23 20:10:57

标签: django django-models django-queryset django-orm

我有一个模型Event,其中有ManyToManyField名用户。我希望获得具有额外属性的所有事件,该属性表示特定用户是否属于此事件。

class Event(models.Model):
    users = models.ManyToManyField(User)

# Expected code format
user = User.objects.get(id=1)
events = // Event query
print events[0].your_event // It should be True if above user is part of this event else False

这是我试过的代码

from django.db.models import Case, When, BooleanField
user = User.objects.get(id=1)
Event.objects.annotate(your_event=Case(when(users=user, then=True), default=False, output_field=BooleanField()))

以上代码出现问题:如果Event对象有多个用户(让4),那么它将返回4个your_eventFalse的对象三个对象和True在一个对象中。但我只希望每个对象 事件

我认为可以为此目的提供更好的解决方案。

0 个答案:

没有答案