gpt4 book ai didi

python - 设置隐藏 ModelForm 字段 Django 的默认值

转载 作者:行者123 更新时间:2023-12-01 02:53:31 37 4
gpt4 key购买 nike

我想在 ModelForm 对象的 Meta 类中传递 HiddenInput 表单字段的初始值。如果该字段未隐藏,例如如:

class Meta:
model = SomeModel
fields = ['some_id', 'some_amount',]

我通过 kwargs 将初始值传递给此表单构造函数,然后将初始值正确设置为这些字段。

但是当我尝试隐藏一个字段时(但我仍然需要将其设置为 kwargs 的初始值),例如:

class Meta:
model = SomeModel
widgets = {'ord_id': forms.HiddenInput(),}
fields = ['some_id', 'some_amount',]

然后 'ord_id' 未设置为 kwargs 的初始值,并且在尝试提交此类表单时收到以下错误:

(Hidden field ord_id) Select a valid choice. That choice is not one of the available choices

那么有什么方法可以正确地将初始值传递给隐藏表单字段吗?

最佳答案

您可以通过两种方式为表单字段设置默认值。

第一种方法是在 view.py 中初始化表单时传递默认值,即

from forms import ExampleForm

INITIAL_DATA = {'ord_id': 'some_id'}

def my_view(request):
...

if request.method == 'GET':
form = ExampleForm(initial=INITIAL_DATA)
if request.method == 'POST':
form = ExampleForm(request.POST)
...

第二个方法是重写表单 __init__ 方法,即

class ExampleForm(forms.ModelForm):

def __init__(self, *args, **kwargs):
"""If no initial data, provide some defaults."""
initial = kwargs.get('initial', {})
initial['ord_id'] = 'ord_id'
kwargs['initial'] = initial
super(ExampleForm, self).__init__(*args, **kwargs)

关于python - 设置隐藏 ModelForm 字段 Django 的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44485606/

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