【发布时间】:2020-07-19 13:26:42
【问题描述】:
我的自动完成代码不起作用。
我有输入字段类坐标,当我输入代码时,它会从我的数据库中找到与 geo_code 匹配的值,从而找到输入代码国家。
所以当我输入UK 时,它与geo_code 匹配,然后将最后一个与country 匹配,所以在这种情况下,英国是我输入的代码,它可以在geo_code 中找到,国家是英国。该代码有效,我想要实现的是在打字时带来自动完成功能以提供建议。例如:
UK United Kingdom
USA United States of America
到目前为止我做了什么:
在 models.py 我有:
class Coordinate(models.Model):
code = models.CharField(max_length=150)
class Profiles(models.Model):
geocode=models.CharField(max_length=200)
country=models.CharField(max_length=500)
city=models.CharField(max_length=500)
class Meta:
managed=False
db_table='profiles_country'
def __str__(self):
return '{}'.format(self.geocode)
在 forms.py 中:
from dal import autocomplete
class CoordinateForm(forms.ModelForm):
code= forms.CharField(max_length=150, label='',widget= forms.TextInput)
class Meta:
model = Coordinate
fields = ('__all__')
widgets = {
'code': autocomplete.ModelSelect2(url='coordinate-autocomplete')}
在 views.py 中:
class CoordinateAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
if not self.request.user.is_authenticated():
return Profiles.objects.none()
qs = Profiles.objects.all()
if self.q:
qs = qs.filter(name__istartswith=self.q)
return qs
在 base.html
中<!DOCTYPE html>
{% load static %}
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="{% static 'geoproj/css/main.css' %}">
</head>
<body>
<div>{% block content %}{% endblock %}
{% block javascripts %} {% endblock %} </div>
</body>
</html>
在 geo.html 中:
{% extends "base.html" %}
{% block content %}
{% if user.is_authenticated %}
<form enctype="multipart/form-data" method="POST" >
{% csrf_token %}
{{ form}}
{{form.media }}
<button class = "btn btn-primary" type="submit">OK</button></form>
{% endif %}
{% endblock content %}
{% block javascripts %} {% endblock %}
感谢您帮助解决此案。
【问题讨论】:
-
你好伙计,你为什么不用javascript?据我所知,你不能只用 django 做到这一点,因为这是一个前端问题,后端不处理数据,同时不发送给它。希望对您有所帮助,注意安全。
标签: python mysql django django-models autocomplete