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.

Reply via email to