字段错误在/。无法将关键字“textField”解析为字段

Posted

技术标签:

【中文标题】字段错误在/。无法将关键字“textField”解析为字段【英文标题】:FieldError at/. Cannot resolve keyword 'textField' into field 【发布时间】:2011-07-07 23:32:41 【问题描述】:

我正在尝试为我的 django 应用程序做一个过滤方法。我在数据库中有一些字段,例如用户名、指定、员工 ID 等。现在我正在尝试进行过滤;下拉菜单显示所有字段(姓名、职务、员工 ID 等)和用于输入一些文本的文本区域。过滤应基于下拉选项选择和在文本区域中输入的数据。执行此操作时出现此错误:FieldError at /filter/ 无法将关键字“textField”解析为字段。选项有:contactNumber、dateOfJoin、designation、employeeID、id、project、userName 我将在此处粘贴我的 html 和 views.py。请帮我解决这个问题。

<form action="http://10.1.0.90:8080/filter/" method="POST">
Filter By: 
<select name="choices" onsubmit="document.forms[0].submit()" >
    <option value="">Select A Choice</option>
    <option value="Name">Name</option> 
    <option value="Designation" >Designation</option>
    <option value="EmployeeID" >EmployeeID</option>
    <option value="Project" >Project</option>
    <option value="Date Of Join" >Date Of Join</option> 
</select>
<input type="text" name="textField">
<input type="submit" value="Go">
</form>

%for data in newData%
 data.userName<br>
%endfor% 

这是我的 VIEWS.PY

def filter(request):     
    val2=request.POST.get('choices')
    val3=request.POST.get('textField')
    print val2,val3
    newData = EmployeeDetails.objects.filter(choices=request.POST.get('choices'),textField=request.POST.get('textField'))
    return render_to_response('filter.html','newData':newData,'val2':val2,'val3':val3)    

MODELS.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()

我对 Django 很陌生。请帮我解决这个问题

【问题讨论】:

完全不清楚您要做什么。您的模型中似乎没有一个名为 textField 的字段,那么您到底要过滤什么?无论如何发布模型代码都会有所帮助。 您在哪里从 POST 中获得“指定”的价值?我在您的代码中没有看到它。另外,您确定 EmployeeDetails 有一个名为“textField”的字段(可能检查大写)? 感谢您的回复..我已经用我的型号代码更新了这个问题。我在模型中没有名为 textField 或选项的字段。在 POST 之后,我在变量选择和 textField 中获取过滤值。如何从我的所有数据库数据中过滤它。 【参考方案1】:

您为什么希望 django 能够神奇地将字段名称映射到您在模板中指定的名称?例如,您的模型中没有任何内容称为您在&lt;select&gt; 选项中列出的任何项目。

我发现这个错误很容易解释:

/filter/ 处的 FieldError 无法解决 关键字'textField'进入字段。 选项有:联系人号码、 dateOfJoin、名称、员工 ID、 id、项目、用户名

您的模型中没有 textField 字段,但您正在尝试对其进行过滤。

想象一下SELECT textField FROM mytable -- textField 根本不存在。

... 和一个用于输入一些内容的文本区域 文本。


至于解决你的问题,你有几个。您正在尝试对选项中指定的特定字段进行查找,但选项与您的字段之间没有关系。

为了让自己更轻松,至少将&lt;option&gt; 标签的值设置为字段名称。

<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>

if request.GET.get('choices'):
    # prevent query on field ''
    EmployeeDetails.objects.filter(**request.GET.get('choices'): \
          request.GET.get('textField'))

【讨论】:

【参考方案2】:

如果我了解您要执行的操作,则说明您使用过滤器的方式错误。尝试使用给定查询(val3)过滤动态发布字段(val2)。

kwargs = 
kwargs[val2] = val3

newData = EmployeeDetails.objects.filter(**kwargs)

代码中的选项值需要映射模型才能使其工作。

【讨论】:

【参考方案3】:

如果您没有一个名为“textField”的字段,则无法过滤您的“EmployeeDetails”模型。您只能使用以下可用字段过滤“EmployeeDetails”模型:“contactNumber, dateOfJoin, designation, employeeID, id, project, userName”。

=)

【讨论】:

以上是关于字段错误在/。无法将关键字“textField”解析为字段的主要内容,如果未能解决你的问题,请参考以下文章

无法将关键字 u'slug' 解析为 Django 中的字段错误?

无法将关键字'user'解析为字段-Django错误

textfield不会清楚,as3

返回 textField 时的 UITableView 错误

Swift iOS - TextField 初始宽度错误的底部边框

如何修复:无法将关键字“用户”解析为字段。选项有:description、end_time、id、start_time、title Django 错误