Django 自动完成指示灯返回什么?
我最近在我的应用程序中安装了autocomplete light Autocomplete通过名为institution的表中名为'name'的字段进行筛选。但是,通过视图发布的是同一对象的“id”,而不是名称 有人知道为什么吗 我的看法是: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
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调试工具栏。当我查看帖子的结果时,它给出了我从自动完成中选择的机构的正确“名称”。