Hello,
I've a complex SQL Query
SELECT DISTINCT "event_event"."id", "event_event"."title", "event_event".
"description", "event_event"."category", "event_event"."event_time",
"event_event"."event_place", "event_event"."time", "event_event"."cancelled"
, "event_event"."posted_by_id",
CASE WHEN EXISTS (SELECT * FROM "event_eventviews" WHERE "event_eventviews".
"user_id" = 5 AND "event_eventviews"."event_id"=("event_event"."id")) THEN
True ELSE False
END AS "liked",
CASE WHEN EXISTS (SELECT * FROM "event_eventviews" WHERE "event_eventviews".
"user_id" = 5 AND "event_eventviews"."event_id"=("event_event"."id")) THEN
True ELSE False
END AS "viewed" FROM "event_event"
ORDER BY "event_event"."id" DESC
I want to convert it to Django Queryset, but I'm unable to do so. I tried
annotation but that adds an outerjoin which results into extra result in
queryset.
Here is what I tried in Django:
queryset = Event.objects.all().order_by('-id').annotate(
viewed = Case(
When(Q(views__user=request.user) & Q(views__event=F('id')),
then=True),
output_field=models.BooleanField(),
default=False
),
liked= Case(
When(Q(likes__user=request.user) & Q(likes__event=F('id')),
then=True),
output_field=models.BooleanField(),
default=False
)
)
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/74a0a64f-9ea6-469a-9acb-bd7fa22ccc7e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.