#29262: Custom Left Outer Join in Queries -------------------------------------+------------------------------------- Reporter: Sassan Haradji | Owner: nobody Type: New feature | Status: new Component: Database layer | Version: (models, ORM) | Severity: Normal | Resolution: Keywords: ORM Join | Triage Stage: Accepted Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 -------------------------------------+-------------------------------------
Comment (by Hugo Maingonnat): I also need a way to generate a query with custom a join: {{{ SELECT "main_table"."id" FROM "main_table" LEFT JOIN (SELECT distinct(main_id) FROM through_table WHERE other_id = 14) as foo ON foo.main_id=main_table.id ORDER BY "main_table"."id" DESC LIMIT 1; }}} The main queryset is generated by the view, and the left join subquery is a custom django-filter. Using a `id__in` would work but I have to repeat the ORDER BY DESC and LIMIT 1 in the subquery (otherwise it gets really ineficient) and ideally the filter should be independant from the initial queryset (so it does not know the ordering and limit). Also django-filter needs to keep a queryset so I cannot generate a RawQueryset (I am not even sure this is doable). Having a `join` keyword in the extra function would have unlocked me. The FilteredRelation object is only limited to a condition (q object) and not a full SELECT query. If it could take a RawSQL or a queryset it would be perfect. So it looks like I cannot generate a quite simple query using any of the django function, a bit frustrating :( Like @Alexandr Artemyev I found out the CustomJoin trick but it looks very brittle. Hope my feedback will help understanding the issue :) -- Ticket URL: <https://code.djangoproject.com/ticket/29262#comment:18> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/065.3ae24a83b63ae19ecac4b3b3f1f50438%40djangoproject.com.