Мне удалось реализовать функцию автозаполнения, используя формат представления на основе классов:
class UserAccountsUpdate(UpdateView):
context_object_name = 'variable_used_in `add_user_accounts.html`'
form_class = AddUserAccountsForm
template_name = 'add_user_accounts.html'
def add_user_institution_details(request):
###code###
С этой формой:
class AddUserAccountsForm(autocomplete_light.ModelForm):
required_css_class = 'required'
name = forms.CharField(
required=True,
widget=autocomplete_light.TextWidget('InstitutionAutocomplete'),
label="",)
class Meta:
model = Institution
autocomplete_fields = ('name')
fields = ('name',)
С urls.py:
url(r'^profile/add_user_accounts/', UserAccountsUpdate.as_view(), name='add_user_accounts'),
Однако я пытаюсь отладить свой код в представлении на основе классов (т.е. add_user_institution_details). Я решил изменить код, вызвав метод напрямую.
Поэтому обновил представление до этого:
def add_user_institution_details(request):
context_object_name = 'variable_used_in `add_user_accounts.html`'
form_class = AddUserAccountsForm
template_name = 'add_user_accounts.html'
if request.method == 'POST':
form = AddUserAccountsForm(request.POST)
# check whether it's valid:
if form.is_valid():
### code ###
и обновил urls.py до:
url(r'^add_details', add_user_institution_details),
По какой-то причине во второй реализации поле поиска автозаполнения полностью исчезло. Что мне не хватает?
add_user_institution_details
принимает только запросы POST? - person Leistungsabfall   schedule 25.11.2015add_details
должен отображать запросы автозаполнения и приниматьPOST
, вам фактически нужно вернуть форму как переменную контекста, чтобы показать ее дляGET
запросов (например:return render(request, 'template.html', {'form': form})
). - person Leistungsabfall   schedule 25.11.2015