如何在django

时间:2017-12-06 07:21:39

标签: javascript python django

我试图在我的django项目模板中过滤我的列 目前,我能够在表中搜索并显示具有该值的行 但我想添加一个dropdown菜单,询问特定的列值,然后根据该值进行过滤

目前我的代码是

views.py

def user_profile(request):
    q = request.GET.get('q','')
    custom = Customer.objects.all()
    if q: 
        custom1=custom.filter(name__contains=q)
        custom2=custom.filter(Product__contains=q)
        custom3=custom.filter(L3__contains=q)
        custom4=custom.filter(Server_Type__contains=q)
        custom5=custom.filter(Version__contains=q)
        custom6=custom.filter(Status__contains=q)
        custom7=custom.filter(PM__contains=q)
        custom8=custom.filter(CDM__contains=q)
        custom = custom1 | custom2 | custom3 | custom4 | custom5 | custom6 | 
                 custom7 | custom8

这里名称产品l3是我希望从

过滤的模型中的字段

在我的home.html中

 <input type="text" class="text_field" id="search" placeholder="Search for..." required>
<input type="button" class="button" onclick="go()" value="go" id="submit">

我的js.js

function go(){
    // alert("hellonikhar");
    var q = document.getElementById("search").value;

    window.open("/?q="+q,"_self");
}

我在var q中存储在文本框中输入的值并显示数据但是我想首先添加一个下拉列表来选择该字段,然后q应该仅根据该列进行过滤

3 个答案:

答案 0 :(得分:1)

要添加动态下拉列表,请从后端发送列名称。

<select name="columns">
    {% for column in columns %}
            <option value="{{column.name}}">Column {{column.id}}: {{column.name}}</option>
    {% endfor %}
</select>

答案 1 :(得分:0)

添加一个id为列名的下拉列表,并使用该列值过滤对象。

Customer.objects.filter(**{columnName:columnValue})

答案 2 :(得分:0)

您可以尝试以下查询

Customer.objects.filter(Q(name__icontains=q)
                   |Q(Product__icontains=q)
                   |Q(L3__icontains=q)
                   |Q(Server_Type__icontains=q)
                   |Q(Version__icontains=q)
                   |Q(Status__icontains=q)
                   |Q(PM__icontains=q)
                   |Q(CDM__icontains=q)
                   )