У меня есть автозаполнение кода, который не работает.
У меня есть класс поля ввода Coordinate, где, когда я набираю код, он находит в моей БД значение, которое совпадает с geo_code, и, следовательно, находит страну входного кода.
Поэтому, когда я набираю UK
, он совпадает с geo_code
, а затем совпадает с последним с country
, поэтому в этом случае UK - это код i, который можно найти в geo_code, а страна - United Kingdom. Код работает, я хочу добиться автозаполнения, чтобы давать подсказки при наборе текста. например:
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
в базе. 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>
в гео. 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 %}
Буду признателен вам за помощь в решении этого дела.