Аннотировать немодельный атрибут в наборе запросов Django - PullRequest
0 голосов
/ 23 мая 2018

У меня есть модель 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 в одном объекте.Но мне нужен только объект для каждого события.

Я считаю, что для этой цели может существовать лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...