空查询返回数据库中的所有字段。Django
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了空查询返回数据库中的所有字段。Django相关的知识,希望对你有一定的参考价值。
在搜索表单字段中,如果我不输入任何内容,而是按下按钮进行搜索查询。查询从数据库中返回每一个字段。 Company.objects.exclude(Q(name__isnull=True)).exclude(Q(name__exact=''))不知为何,对我没有帮助。如果我把它们一起使用或分开使用。views.py中的代码是。
class className(listView)
model=Company
template_name='name_of_the_template.html'
def get_queryset(self):
query=self.request.Get.get('q')
query=query.replace('#',' ') //same for ?/$%^+*()[] *tried to set exclude code here
if query == ' ':
object_list = Company.objects.filter(Q(name__icontains='None'))//sending to the empty object
return object_list
else:
// *tried to set exclude code here
object_list = Company.objects.filter(Q(name__icontains=query))
return object_list
所有的exclude代码都没有帮助。我相信我做了简单的错误的地方... ...因为代码应该工作,但不知何故仍然.我只是也试图摆脱if else语句和使用排除语句的查询,如'',''和null,然后过滤查询... ...。现在排除'''的查询也不行了......
Django并没有告诉我排除不工作,所有的工作,除了,它就像没有在代码中。
答案
如果你什么都不输入,那么这个字符串就是空的。''
或它是 None
如果没有传递参数。因此,您可以检查 真实性 的 query
然而,你可能最好先 .strip()
字符串来删除任何前导或尾部的空格。
def get_queryset(self):
query = self.request.Get.get('q')
if query is not None:
query = query.replace('#',' ')
query = query.strip()
if not query:
return Company.objects.none()
else:
return Company.objects.filter(name__icontains=query)
在模板中,你可以使用 {% for … %}…{% empty %}…{% endfor %}
模板块[Django-doc]:
{% for object in object_list %}
{{ object }}
{% empty %}
no objects found!
{% endfor %}
以上是关于空查询返回数据库中的所有字段。Django的主要内容,如果未能解决你的问题,请参考以下文章