gpt4 book ai didi

django - 如何将以前的表单数据传递给 FormWizard 中 DynamicForm 的构造函数

转载 作者:行者123 更新时间:2023-12-03 18:17:58 26 4
gpt4 key购买 nike

我有一个 FormWizard,我需要第一个表单中的数据传递给第二个表单的构造函数,以便我可以构建动态表单。

我可以通过 FormWizard 的 process_step 获取第一个表单的数据。

我使用字段列表的数据库调用创建了第二个表单的字段。

class ConditionWizardDynamicQuestions(forms.Form):

def __init__(self, DynamicQuestions=None, *args, **kwargs):
super(ConditionWizardDynamicQuestions, self).__init__(*args, **kwargs)
questions = Question.objects.filter(MYDATA = DATA_FROM_1STFORM)
for q in questions:
dynField = FieldFactory(q)
self.fields[q.label] = dynField

我怎样才能通过 DATA_FROM_1STFORM ?

我的结果代码:
我放弃了 初始化 的形式,并将其切换到 CreateQuestions def。然后使用向导的 get_form 覆盖在创建后更改表单。
class ConditionWizard(SessionFormWizard):
def get_form(self, request, storage, step=None, data=None, files=None):
form = super(ConditionWizard, self).get_form(request, storage, step, data, files)
stepIndex = self.get_step_index(request, storage, step)
if stepIndex == 1:
form.CreateQuestions(request.session["WizardConditionId"])
if stepIndex == 3:
form.fields['hiddenConditionId'].initial = request.session["WizardConditionId"]
form.fields['medicationName'].queryset = Medication.objects.filter(condition = request.session["WizardConditionId"])
return form

最佳答案

FormWizard 已经将数据从每个前一个表单传递到下一个表单。如果您想获取该数据以实例化一个类(例如,如果表单具有它需要的特殊关键字参数),一种方法是通过覆盖 get_form 来获取 querydict。在您的表单向导类中。例如:

class SomeFormWizard(FormWizard):
def get_form(self, step, data=None):
if step == 1 and data: # change this to whatever step requires
# the extra data
extra_data = data.get('key_from_querydict')
if extra_data:
return self.form_list[step](data,
keyword_argument=extra_data,
prefix=self.prefix_for_step(step),
initial=self.initial.get(step, None))
# Fallback for the other forms.
return self.form_list[step](data,
prefix=self.prefix_for_step(step),
initial=self.initial.get(step, None))

请注意,您也可以覆盖 parse_params(self, request, *args, **kwargs)在 FormWizard 中访问 url/请求数据,就像在 View 中一样,因此如果您有所有表单都需要的请求数据(例如 request.user),最好获取那里的数据。

希望这会有所帮助。

关于django - 如何将以前的表单数据传递给 FormWizard 中 DynamicForm 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3940138/

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