Django 自动完成指示灯返回什么?

Django 自动完成指示灯返回什么?,django,django-forms,django-views,django-autocomplete-light,Django,Django Forms,Django Views,Django Autocomplete Light,我最近在我的应用程序中安装了autocomplete light Autocomplete通过名为institution的表中名为'name'的字段进行筛选。但是,通过视图发布的是同一对象的“id”,而不是名称 有人知道为什么吗 我的看法是: class UserAccountsUpdate(UpdateView): context_object_name = 'variable_used_in `add_user_accounts.html`' form_class = Add

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

Autocomplete通过名为institution的表中名为'name'的字段进行筛选。但是,通过视图发布的是同一对象的“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

由于您没有发布您的
models.py
我只能假设
name
Institution
模型中的
CharField
,您只是在这里使用autocomplete来简化名称的添加

要实现此用途,请使用和
forms.CharField

class AddUserAccountsForm(forms.ModelForm):

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

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

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

由于您没有发布您的
models.py
我只能假设
name
Institution
模型中的
CharField
,您只是在这里使用autocomplete来简化名称的添加

要实现此用途,请使用和
forms.CharField

class AddUserAccountsForm(forms.ModelForm):

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

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

我懂了。非常感谢!这很有效。同一代码的一部分。你知道为什么institution\u selected=institution.objects.get(name=name)不获取任何结果吗?该条目必须在表中,因为autocomplete找到了它。
name
是来自
request.POST
还是来自
form
?如果在代码中添加
print(name)
,是否也会获得所需的输出?(注意空格字符)首先,感谢您的帮助。我已经实现了类格式的view函数,这使得调试非常困难。我的打印报表没有显示。(有更好的类格式调试方法吗?)我“假设”名称来自用户从自动完成中选择的名称。在调用
form.Is有效吗()
?打印不会显示在我的终端中。这就是为什么我很难调试这个错误。如果你能建议我在哪里可以看到输出,那就太好了。然而,正如在堆栈溢出的其他地方所建议的,我安装了Django调试工具栏。当我查看帖子的结果时,它给出了我从自动完成中选择的机构的正确“名称”。我明白了。非常感谢!这很有效。同一代码的一部分。你知道为什么institution\u selected=institution.objects.get(name=name)不获取任何结果吗?该条目必须在表中,因为autocomplete找到了它。
name
是来自
request.POST
还是来自
form
?如果在代码中添加
print(name)
,是否也会获得所需的输出?(注意空格字符)首先,感谢您的帮助。我已经实现了类格式的view函数,这使得调试非常困难。我的打印报表没有显示。(有更好的类格式调试方法吗?)我“假设”名称来自用户从自动完成中选择的名称。在调用
form.Is有效吗()
?打印不会显示在我的终端中。这就是为什么我很难调试这个错误。如果你能建议我在哪里可以看到输出,那就太好了。然而,正如在堆栈溢出的其他地方所建议的,我安装了Django调试工具栏。当我查看帖子的结果时,它给出了我从自动完成中选择的机构的正确“名称”。