Различные реализации для Autocomplete-light

Мне удалось реализовать функцию автозаполнения, используя формат представления на основе классов:

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),

По какой-то причине во второй реализации поле поиска автозаполнения полностью исчезло. Что мне не хватает?


person H C    schedule 25.11.2015    source источник
comment
Предполагается ли, что функциональное представление add_user_institution_details принимает только запросы POST?   -  person Leistungsabfall    schedule 25.11.2015
comment
@Leistungsabfall Да. Предполагается, что пользователь выберет учреждение. Затем я могу получить идентификатор этого учреждения из БД и сохранить его в пользовательской таблице, связанной с этим пользователем. Проблема здесь также в том, что панель автозаполнения даже не отображается. Не уверен, почему это работает в классе, но не в форме функции.   -  person H C    schedule 25.11.2015
comment
Я думаю, что вы неправильно понимаете, как работают представления на основе функций. Предполагая, что URL-адрес add_details должен отображать запросы автозаполнения и принимать POST, вам фактически нужно вернуть форму как переменную контекста, чтобы показать ее для GET запросов (например: return render(request, 'template.html', {'form': form})).   -  person Leistungsabfall    schedule 25.11.2015