gpt4 book ai didi

Django Form 将 ChoiceField 选项设置为 Form 被调用

转载 作者:行者123 更新时间:2023-12-04 17:10:28 24 4
gpt4 key购买 nike

我正在尝试与库存应用程序集成,并允许用户通过 Django 表单将零件添加到库存中。我可以从库存数据库中读取,但必须通过 API 写入,因此根据他们在以前的表单中输入的内容,我想为他们提供要添加的可用零件列表。

这是我的表单,我设置了一些选项作为默认值:

class PartForm(forms.Form):
PART_CHOICES = (
('BT-J1KND-A', 'BT-J1KND-A'),
('BT-J1KND-B', 'BT-J1KND-B'),)
part = forms.ChoiceField(choices = PART_CHOICES,required = True, label = 'Part to add to Inventory')

这是我设置选择的地方
parts_list = part_sql(part)
#build choices
PART_CHOICES= [(p[0],p[0]) for p in parts_list]
form = PartForm()
form.fields['part'].choices = PART_CHOICES

它在模板中正确显示,但是当我点击保存并处理表单时,如果它不是我输入的默认选项之一,则表示它不是一个有效选项。
Select a valid choice. BT-J1KND-C is not one of the available choices.

如何解决此问题以使其接受我设置为有效选项的选项?

最佳答案

一旦请求得到处理,您的用户输入似乎进入了未经修改的 PartForm ,使用硬编码值。

为了正确处理请求,您需要具有一致的 PartForm
您可以通过修改字段的 choices 顺利实现这一点。初始化时的属性。

例如:

class ExampleForm(forms.Form):
CHOICES = (
('EXMPL', 'Example'),
)
field = forms.ChoiceField(choices=CHOICES, required=True, label='Example')

def __init__(self, custom_choices=None, *args, **kwargs):
super(ExampleForm, self).__init__(*args, **kwargs)
if custom_choices:
self.fields['field'].choices = custom_choices

然后,请记住正确初始化表单,使用
form = ExampleForm(my_custom_choices_nested_tuple, ...)
您还可以仔细检查您实际处理数据的位置(我猜在您复制的代码中没有提到 form = PartForm(request.REQUEST))

关于Django Form 将 ChoiceField 选项设置为 Form 被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17392459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com