Djang的过滤器

2024-09-28 01:27:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图实现一个简单的过滤器方法之间的选择从下拉列表和一个文本字段。下拉列表中有诸如姓名、职务、员工ID(这些都是DB中的字段)等选项。有一个文本字段,可在其中指定所选选项的值。例如:如果我从下拉列表中选择“指定”,并且在文本字段中选择“软件工程师”:我想用名称“软件工程师”显示用户。若我从下拉列表中选择Name并在文本字段中给定“John”,我希望显示名为John的用户。我怎么能在Django做到这一点。我对Django很陌生,所以请帮我做这个。我将把我的代码粘贴在这里。 视图.PY

def filter(request):
    val=request.POST.get('designation')      
    val2=request.POST.get('choices')
    val3=request.POST.get('textField')
    print val
    print val2,val3
    if val2=='Designation':       
        newData = EmployeeDetails.objects.filter(designation=request.POST.get('choices'))
        print val2
    elif val2=='Name':
        newData = EmployeeDetails.objects.filter(userName=request.POST.get('choices'))
        print val2
    elif val2=='EmployeeID':
        newData = EmployeeDetails.objects.filter(employeeID=request.POST.get('choices'))
        print val2    
    elif val2=='Project':
        newData = EmployeeDetails.objects.filter(project=request.POST.get('choices'))  
        print val2 
    elif val2=='DateOfJoin':
        newData = EmployeeDetails.objects.filter(dateOfJoin=request.POST.get('choices'))  
        print val2
    else:
        print "Data Not Found"       

    return render_to_response('filter.html',{'newData':newData,'val2':val2})      

HTML

^{pr2}$

模型.PY

class EmployeeDetails(models.Model):
    userName = models.CharField(max_length=200)
    designation = models.CharField(max_length=200)
    employeeID = models.IntegerField()
    contactNumber = models.CharField(max_length=200)
    project = models.CharField(max_length=200)
    dateOfJoin=models.TextField()

Tags: 文本列表getobjectsmodelsrequestfilterpost
3条回答

为了补充Yuji的答案,我建议你阅读关于kwargs和Q的表达式。这些将帮助您进行这种动态查询。在

def filter(request):
    val=request.POST.get('designation')      
    val2=request.POST.get('choices')
    val3=request.POST.get('textField')
    print val
    print val2,val3
    if val2=='Designation':

        newData = EmployeeDetails.objects.filter(designation=request.POST.get('textField'))
        print val2
    elif val2=='Name':
        newData = EmployeeDetails.objects.filter(userName=request.POST.get('textField'))
        print val2
    elif val2=='EmployeeID':
        newData = EmployeeDetails.objects.filter(employeeID=request.POST.get('textField'))
        print val2    
    elif val2=='Project':
        newData = EmployeeDetails.objects.filter(project=request.POST.get('textField'))  
        print val2 
    elif val2=='DateOfJoin':
        newData = EmployeeDetails.objects.filter(dateOfJoin=request.POST.get('textField'))  
        print val2
    else:
        print "Data Not Found"       

    return render_to_response('filter.html',{'newData':newData,'val2':val2})

这解决了我的问题

我在你的另一篇文章中给出了解决方案:

first, make your choice values EXACTLY the field names you want to search.

<select name="choices" onsubmit="document.forms[0].submit()" >
    <option value="">Select A Choice</option>
    <option value="userName">Name</option> 
    <option value="designation" >Designation</option>
    <option value="employeeID" >EmployeeID</option>
    <option value="project" >Project</option>
    <option value="dateOfJoin" >Date Of Join</option> 
</select>

然后,在您的视图中,使用关键字扩展将choices给出的字符串扩展为关键字参数。在

^{pr2}$

相关问题 更多 >

    热门问题