I would use Case and When and other Func objects. https://docs.djangoproject.com/en/1.10/ref/models/conditional-expressions/ That way we don't have to depend on raw SQL.
-----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Larry Martell Sent: Monday, February 20, 2017 3:00 PM To: [email protected] Subject: Re: combining ORM and raw SQL in same query Thanks! On Mon, Feb 20, 2017 at 10:52 AM, m1chael <[email protected]> wrote: > i did something like this recently using .extra / select > > https://docs.djangoproject.com/en/1.10/ref/models/querysets/#extra > > > > On Mon, Feb 20, 2017 at 10:49 AM, Larry Martell > <[email protected]> > wrote: >> >> Is there any way to use both the ORM and raw SQL in the same query? >> >> I have an existing app that uses the ORM and now I have a need to add >> SQL like this to the select: >> >> (CASE >> WHEN TRIM(IFNULL(roiname, '')) IN ('', 'None') THEN CONCAT_WS('.', >> roi_type_id, roi_id) >> WHEN CONCAT_WS('.', roi_type_id, roi_id) = roiname THEN roiname >> ELSE CONCAT_WS('.', roi_type_id, roi_id, roiname) >> END) as roiname >> >> and SQL like this to the where: >> >> AND (CASE >> WHEN TRIM(IFNULL(roiname, '')) IN ('', 'None') THEN CONCAT_WS('.', >> roi_type_id, roi_id) >> WHEN CONCAT_WS('.', roi_type_id, roi_id) = roiname THEN roiname >> ELSE CONCAT_WS('.', roi_type_id, roi_id, roiname) >> END) REGEXP 'foo' >> >> As far as I know I cannot do anything like that with the ORM. I don't >> want to have to rewrite everything with raw SQL. Is there a way to >> mix them? -- 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 https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CACwCsY7xjBPYK17Vp2H-uV2c0aH3p-%2BG_Ya5n9dBjifE0Nk6ag%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout. -- 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 https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/15817ffef8024d219cc336ec235fb529%40ISS1.ISS.LOCAL. For more options, visit https://groups.google.com/d/optout.

