[英]Django models queryset with array
我想制作一個函數,該函數將返回名稱包含一些文本的應用程序。
假設我們有以下模型:
class Application(models.Model):
name = models.CharField(max_lenght=100)
Example values: "T2 AAA", "T2 BBB", "FSA KK" etc.
現在,我想編寫一個函數,如果此函數的屬性為AAA,則應返回應用程序T2 AAA:
def getApplication(request, title):
titleVars = title.split(' ')
applications = Application.objects.filter(name__in=titleVars)
老實說,我不知道該怎么做,我認為我應該使用icontains
但是我不知道它如何應用於數組titleVars
。
執行示例:
getApplication(request, 'Some text whatever T2 AAA XXX/K')
提前致謝
我想您正在尋找類似的搜索。
使用Q()
-
from django.db.models import Q
obj_list = Application.objects.filter(reduce(lambda x, y: x | y, [Q(name__contains=word) for word in titleVars]))
那就是推薦的方法。
其他選項-
您可以使用django-like來做到這一點(ref- answer ):
Application.objects.filter(name__like=titleVars[1])
其他方法是您可以遍歷數組項,並進行正則表達式檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.