Django QuerySet 过滤字符串
Django QuerySet filter over string
我有一个包含一些行的 models.py 文件,我想在我的 HTML 模板上 return 所有与我的过滤器 QuerySet 对应的行。
#models.py
def Test(request) :
CarCollection = MyModel.objects.filter(car="old")
context = {
"CarCollection" : CarCollection
}
return render(request, 'car.html', context)
我的 html 模板如下:
<!-- car.html -->
{% block content %}
<ul>
{% for car in CarCollection %}
<li>{{ car }}</li>
{% endfor %}
</ul>
{% endblock %}
但我的对象看起来像:
Volvo_old_car
Audi_old_car
Nissan_new_car
old_Bentley
所以我想在我的对象中隔离一个字符串(例如old
)并且return所有对象都带有这个字符串。但是这个字符串可以在开头,中间或结尾。
过滤器将 return :
Volvo_old_car
Audi_old_car
old_bentley
我需要使用 Regex 来做到这一点吗?
提前致谢
您可以使用:
endswith 或 istartswith 在查询中。
CarCollection = MyModel.objects.filter(car__istartswith="old")
而不是
MyModel.objects.filter(car="old")
做
MyModel.objects.filter(car__icontains="old")
这将告诉 Django 过滤掉所有 MyModel
对象,其中 car
字段包含 old
.
注意:如果您想要区分大小写的搜索,您也可以直接使用 car__contains="old"
。
P.S。您绝对应该检查 PEP8 Python 约定。这将帮助您编写易于 Python 开发人员阅读的代码。
您可以使用 Django 提供的字段查找来过滤您的查询集。
MyModel.objects.filter(car__contains="old")
我有一个包含一些行的 models.py 文件,我想在我的 HTML 模板上 return 所有与我的过滤器 QuerySet 对应的行。
#models.py
def Test(request) :
CarCollection = MyModel.objects.filter(car="old")
context = {
"CarCollection" : CarCollection
}
return render(request, 'car.html', context)
我的 html 模板如下:
<!-- car.html -->
{% block content %}
<ul>
{% for car in CarCollection %}
<li>{{ car }}</li>
{% endfor %}
</ul>
{% endblock %}
但我的对象看起来像:
Volvo_old_car
Audi_old_car
Nissan_new_car
old_Bentley
所以我想在我的对象中隔离一个字符串(例如old
)并且return所有对象都带有这个字符串。但是这个字符串可以在开头,中间或结尾。
过滤器将 return :
Volvo_old_car
Audi_old_car
old_bentley
我需要使用 Regex 来做到这一点吗?
提前致谢
您可以使用: endswith 或 istartswith 在查询中。
CarCollection = MyModel.objects.filter(car__istartswith="old")
而不是
MyModel.objects.filter(car="old")
做
MyModel.objects.filter(car__icontains="old")
这将告诉 Django 过滤掉所有 MyModel
对象,其中 car
字段包含 old
.
注意:如果您想要区分大小写的搜索,您也可以直接使用 car__contains="old"
。
P.S。您绝对应该检查 PEP8 Python 约定。这将帮助您编写易于 Python 开发人员阅读的代码。
您可以使用 Django 提供的字段查找来过滤您的查询集。
MyModel.objects.filter(car__contains="old")