Untuk menjaga urutan kata-kata seperti dalam pernyataan sql LIKE '% pattern%' saya menggunakan iregex, misalnya:
qs = table.objects.filter(string__iregex=pattern.replace(' ', '.*'))
metode string tidak dapat diubah sehingga variabel pola Anda tidak akan berubah dan dengan. * Anda akan mencari 0 atau lebih kemunculan karakter apa pun kecuali garis putus.
Dengan menggunakan yang berikut ini untuk mengulangi kata-kata pola:
qs = table.objects
for word in pattern.split(' '):
qs = qs.filter(string__icontains=word)
urutan kata-kata dalam pola Anda tidak akan dipertahankan, untuk beberapa orang yang bisa bekerja tetapi dalam kasus mencoba meniru pernyataan seperti sql saya akan menggunakan opsi pertama.
result = table.objects.filter(string__icontains='pattern')