空查询返回数据库中的所有字段。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的主要内容,如果未能解决你的问题,请参考以下文章

如果空字段返回所有元素,则在 Django 中查询集

使用 ORM Django 过滤新更新的查询集返回空查询集

如何跳过查询条件片段中的空对象?

查询不返回空品牌字段

选择字段中的 Django 空标签 - 没有查询集

Django框架:模型 字段查询查询集