Здравствуйте! Помогите пожалуйста разобраться.
В своем Джанго приложении у меня есть модальное окно с формой, где есть три поля. Пытаюсь использовать для первого поля автозаполнения с помощью
JQuery UI Autocomplate. Использовал следующий код, но не работает. Подскажите пожалуйста где совершил ошибку и как её исправить? Также необходимо с помощью первого поле, после того как пользователь выберет значение автозаполнять второе поле в зависимости от от первого поля. Как сделать такого рода автозаполнение? В первое поле нужно автозаполнять значениями из user_class и в зависимости от этого ставить во второе поле значение из user_symbol.
models.py:
class UserDictionary(models.Model):
user_class = models.CharField(_('Class'), max_length=250)
user_symbol = models.CharField(_('Symbol'), max_length=250)
user_name = models.TextField(_('Description'))
forms.py:
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ('user_class', 'user_symbol', 'user_name')
def __init__(self, *args, **kwargs):
super(UserForm, self).__init__(*args, **kwargs)
self.fields['user_class'].widget = TextInput(attrs={'id': 'user-class'})
self.fields['user_symbol'].widget = TextInput(attrs={'id': 'user-symbol'})
HTML:
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
JAVASCRTIPT:
$(function() {
$("#user_class").autocomplete({
source: "/user_autocomplete/",
minLength: 2
});
});
urls.py:
url(r'^user_autocomplete/$', user_autocomplete, name='user_autocomplete'),
views.py:
def user_autocomplete(request):
if request.is_ajax():
word = request.GET.get('term', '')
users = UserDictionary.objects.filter(user_class__icontains=word)
results = []
for user in users:
user_json = {'label': user.user_class, 'value': user.user_class}
results.append(user_json)
data = json.dumps(results)
else:
data = 'fail'
mimetype = 'application/json'
return HttpResponse(data, mimetype)