Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 立即在框中输入文本以自动完成_Python_Django_Forms_Django Autocomplete Light - Fatal编程技术网

Python 立即在框中输入文本以自动完成

Python 立即在框中输入文本以自动完成,python,django,forms,django-autocomplete-light,Python,Django,Forms,Django Autocomplete Light,我有一个表单集,在全名字段上有django autocomplete light。我希望能够将选项卡放入框中并键入。但是,目前,如果我在框中添加tab键,我无法键入,这就像是一个选项字段,但是如果我单击它(或空格键),它会打开下拉菜单,我可以键入我单击的菜单下的区域,就像我在第一选择选项中键入一样 from functools import partial, wraps from django.urls import reverse from django.http import HttpRe

我有一个表单集,在
全名
字段上有
django autocomplete light
。我希望能够将
选项卡
放入框中并键入。但是,目前,如果我在框中添加tab键,我无法键入,这就像是一个
选项字段
,但是如果我单击它(或空格键),它会打开下拉菜单,我可以键入我单击的菜单下的区域,就像我在第一选择选项中键入一样

from functools import partial, wraps
from django.urls import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django import forms
from extra_views import ModelFormSetView, InlineFormSetView, InlineFormSet, CreateWithInlinesView
from dal import autocomplete, forward

from .models import Record, Ledger, Person

from pdb import set_trace as st

# Create your views here.


class NameAutocomplete(autocomplete.Select2ListView):

    def get_list(self):
        return self.forwarded.get('full_name_choices', [])


def create_form_class(persons):
    full_name_choices = [p.full_name for p in persons]

    class RecordForm(forms.ModelForm):

        full_name = autocomplete.Select2ListChoiceField(
            widget=autocomplete.ListSelect2(
                url='name_autocomplete',
                forward=[
                    forward.Const(
                        full_name_choices, 'full_name_choices'
                    )
                ]
            )
        )

        class Meta:
            model = Record
            fields = ['score', 'full_name', ]

    return RecordForm


def create_records(request, pk):
    ledger_id = pk
    ledger = Ledger.objects.get(pk=ledger_id)
    persons = Person.objects.filter(ledger_id=ledger_id)

    RecordInlineFormSet = forms.inlineformset_factory(
        Ledger,
        Record,
        can_delete=False,
        form=create_form_class(persons),
        extra=len(persons),
    )

    if request.method == 'POST':
        formset = RecordInlineFormSet(
            request.POST,
            instance=ledger,
        )

        if formset.is_valid():
            formset.save()
            return HttpResponseRedirect('admin')
    else:
        formset = RecordInlineFormSet(
            instance=ledger,
            queryset=Person.objects.none(),
        )
    return render(
        request,
        'app/ledger_detail.html',
        {'formset': formset},
    )