我有一个模型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_event
为False
的对象三个对象和True
在一个对象中。但我只希望每个对象
事件
我认为可以为此目的提供更好的解决方案。