如何在Django中使用单个字段创建优化或高级搜索

萨米尔·滕杜卡

我在导航栏中做了一个搜索字段,当前搜索是按标题,用户名,first_name,last_name查找帖子。带有“ title”的搜索可能有100个结果,依此类推。

我目前在导航栏中要保留的搜索

<form class="navbar-form navbar-left" action="{% url 'posts:all' %}">
      <div class="form-group">
       <input type="text" class="form-control" placeholder="Search" name="q">
      </div>
     <button type="submit" class="btn btn-default">Submit</button>
</form>

我现在想创建一个精致的搜索页面(一个新页面)。在该页面中,将有4个单独的搜索字段,例如:

按标题搜索帖子:__搜索框_____

按用户名搜索帖子__搜索框____

按名字搜索帖子__搜索框____

按姓氏搜索帖子__搜索框____

这是所有组合字段的视图外观。

class Postlist(SelectRelatedMixin, ListView):
model = Post
select_related = ('user', 'group')
def get_queryset(self):
    queryset = super(Postlist, self).get_queryset()
    query = self.request.GET.get('q')
    if query:
        queryset = queryset.filter(
            Q(title__icontains=query)|
            Q(user__username__iexact=query)|
            Q(user__first_name__iexact=query)|
            Q(user__last_name__iexact=query)

        )
    return queryset

如果这个问题太基础了,我很抱歉,我是django的初学者。我该怎么做。是否会有4种名称不同的表格。示例,而不是name =“ q”,我将拥有表单name =“ a”,表单name =“ b”,表单name =“ c”等。视图也将如何显示

拉尔夫

这新的一页你谈论可能有4个HTML输入字段一个HTML表单,每一个都有自己name的属性(例如:field_1field_2field_3field_4)。

您的视图可能如下所示:

def get_queryset(self):
    qs = super().get_queryset()

    final_q = Q()  # empty Q that will be OR'ed together with the other statements
    if len(self.request.GET.get('field_1', '')) > 0:
        final_q |= Q(title__icontains=self.request.GET['field_1'])
    if len(self.request.GET.get('field_2', '')) > 0:
        final_q |= Q(user__username__iexact=self.request.GET['field_2'])
    if len(self.request.GET.get('field_3', '')) > 0:
        final_q |= Q(user__first_name__iexact=self.request.GET['field_3'])
    if len(self.request.GET.get('field_4', '')) > 0:
        final_q |= Q(user__last_name__iexact=self.request.GET['field_4'])

    # apply Q to queryset
    qs = qs.filter(final_q)

    return qs

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在python中使用弹性搜索dsl访问单个字段

从单个字段CSV文件中使用“查找”进行搜索

如何通过Java高级Rest客户端在Elastic Search中使用多个字段进行搜索

如何在Django中创建基于单个条件过滤多个字段的查询集?

如何在视频中使用高级自定义字段

如何在节点js中使用sequelize搜索多个字段?

ElasticSearch:如何使用 Java 高级 REST 客户端跨多个字段执行搜索?

如何使用Django Rest Framework修补单个字段?

如何在elasticsearch中同时在嵌套字段中搜索单个对象的两个字段

使用PDO从多个字段进行高级搜索

如何在单个Django查询中使用基于字段值的条件使用多个order_by

如何在使用 For 循环遍历 Django 模板中 ModelForm 的所有字段时访问单个字段?

如何在html中创建搜索部分并在django中使用多个查询搜索视图

如何在Django管理中使用自定义字段进行搜索

ElasticSearch 高级 Rest Client 搜索具有多个值的单个字段

如何在MapReduce中使用多个字段?

如何在 JS 中使用多个字段重构“if”

如何在多个字段中使用[PUT,UPDATE,DELETE]?

如何使用codeigniter活动记录在mysql表的单个字段中搜索多个值?

在SQL中使用单独的字段或单个字段作为CSV

如何在Django的ForeignKey字段中使用通过模型类自动创建的隐式?

如何在Matlab中使用单个向量创建周期矩阵?

如何在 JavaScript 中使用单个对象创建多个对象?

如何使用QuerySets和MySql“全文搜索”在多个字段中进行Django搜索?

如何在Django Rest Framework中显示单个字段的深度?

如何在 django rest 框架查询中获取单个字段?

Django:在 HTML 中使用多个输入字段(带下拉菜单)搜索 Django 模型的多个字段

如何在sql中添加几个字段的值并使用Django从该总和中创建一个?

如何在URI搜索中搜索多个字段