autocomplete-light return 是什么?

what does the autocomplete-light return?

我最近在我的应用程序中安装了 autocomplete-light。

自动完成过滤通过名为 table 的机构中名为 'name' 的字段。但是,通过视图是post的是同一个对象的'id',而不是名称

有人知道这是为什么吗?

我的看法是:

class UserAccountsUpdate(UpdateView):
    context_object_name = 'variable_used_in `add_user_accounts.html`'
    form_class = AddUserAccountsForm
    template_name = 'add_user_accounts.html'
    success_url = 'add_user_accounts.html'

    def add_user_institution_details(request):
        if request.method == 'POST':
            # create a form instance and populate it with data from the request:
            form = AddUserAccountsForm(request.POST)
            # check whether it's valid:
            if form.is_valid():
                institution_selected = Institution.objects.get(id=name)
                form.save()

        return render(request)

    #get object
    def get_object(self, queryset=None): 
        return self.request.user

表格为:

class AddUserAccountsForm(forms.ModelForm):

    name = forms.ModelChoiceField(required=True, queryset=Institution.objects.all(), widget=autocomplete_light.ChoiceWidget('InstitutionAutocomplete'), label="")

    class Meta:
        model = Institution
        fields = ('name',)

autocomplete-light 的 ChoiceWidget 默认使用模型的 PrimaryKey 进行 post 请求,在您的情况下是 id.

因为你没有 post 你的 models.py 我只能假设 nameInstitution 模型中的 CharField 而你只是在使用此处自动完成以简化名称的添加。

实现这个使用TextWidgetforms.CharField:

class AddUserAccountsForm(forms.ModelForm):

    name = forms.CharField(
        required=True,
        widget=autocomplete_light.TextWidget('InstitutionAutocomplete'),
        label="",
    )

    class Meta:
        model = Institution
        fields = ('name',)