Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django ORM to find if a string contains column value

I'd like to know how to write ORM code of the following SQL:

select * from t1 where 'ABCDEFG' LIKE CONCAT('%',column1,'%');

It seems that Django supports only the following code:

XYZ.objects.filter(column1__contains='ABCDEFG')

What I want is something like that:

XYZ.objects.filter('ABCDEFG'__contains=column1)

I'd like to know the correct way of Python/Django.

Thank you.

like image 624
pincoin Avatar asked Feb 27 '26 21:02

pincoin


1 Answers

XYZ.objects\
    .annotate(querystring=Value('ABCDEFG', output_field=CharField()))\
    .filter(querystring__icontains=F('column1'))

My team mate found this one. It works for me. Under the hood it gives the same SQL as topic starter mentioned above.

like image 93
Ivan Rostovsky Avatar answered Mar 01 '26 12:03

Ivan Rostovsky