1

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

自动完成过滤器通过名为机构的表中名为“名称”的字段。但是,通过视图发布的是同一对象的“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',)
4

1 回答 1

0

默认情况下, autocomplete-lightChoiceWidget使用模型的 PrimaryKey 进行发布请求,在您的情况下是id.

由于您没有发布您的models.py我只能假设这name是模型CharField中的aInstitution并且您只是在此处使用自动完成来简化名称的添加。

为了实现这个用途TextWidgetforms.CharField

class AddUserAccountsForm(forms.ModelForm):

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

    class Meta:
        model = Institution
        fields = ('name',)
于 2015-11-24T07:52:52.320 回答