【发布时间】:2019-11-30 16:36:04
【问题描述】:
感谢您查看我的问题:
如何在表单文本框中显示文本,但在发布表单时检索 ID。
使用自动完成功能一切正常,期望正确显示代表姓名。
当我在下面尝试此操作时,我可以使用 PK 发布表单,但显示的是 pk 编号而不是代表名称。我想在文本框中查看代表姓名
view.py
rep_json = {}
rep_json['id'] = item.pk
rep_json['label'] = f'{item.rep_first_name} {item.rep_last_name}'
rep_json['value'] = item.pk
我尝试了各种组合来使其工作,但是当我可以在文本框中显示文本时,pk 上的验证失败。
自动完成的字段是外键,因此验证失败。
沙盒.html
<script>
$(function() {
$("#autoc").autocomplete({
source: "/autocomplete/",
minLength: 2,
});
});
</script>
<form method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
forms.py
class sales_form2(forms.ModelForm):
class Meta:
model = sales
fields = (
'position',
'rep',
'comm' )
widgets = { 'rep': forms.TextInput(attrs={'style':'width:100px','data-url':'autocomplete/','id':'autoc'})}
views.py - 自动完成
def sandbox_complete(request):
if request.is_ajax():
q = request.GET.get('term', '')
theReps = reps.objects.filter(Q(rep_first_name__icontains = q)|Q(rep_last_name__icontains=q))
results = []
for item in theReps:
rep_json = {}
rep_json['id'] = item.pk
rep_json['label'] = f'{item.rep_first_name} {item.rep_last_name}'
rep_json['value'] = item.pk
results.append(rep_json)
data = json.dumps(results)
else:
data = 'fail'
mimetype = 'application/json'
return HttpResponse(data, mimetype)
任何指针都将不胜感激,即使是我接下来可以搜索的内容,因为我似乎已经在这方面用尽了互联网。
非常感谢 格雷厄姆
【问题讨论】:
标签: python jquery django autocomplete