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/CACwCsY46a1-A6zqfZVeUC5r%2B-
> xrupii_DJOVJRb%2B5K-Z22ZgGQ%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/CAAuoY6OomVnpcM9TTOx2hAVYTGZSEMcRgNKXiOD8k2JBUerZXA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to