基于上一个窗体向导步骤向窗体集添加窗体

2024-04-26 00:10:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在努力解决这个问题,似乎找不到解决办法。。。在

我有一个表单向导,它包含两个步骤:一个表单(step0),然后是一个表单集(step1):

在表单.py

# Step 0
class StrategyForm(forms.ModelForm):
     class Meta:
        model = Strategy

# Step 1
class LegForm(forms.ModelForm):
    class Meta:
        model = Leg

LegFormSet = formset_factory(LegForm, max_num=10)

在步骤0中,用户输入一个数字,我想在表单集中使用这个数字作为“额外的”,也就是说,如果用户在步骤0中输入10,我希望表单集在下一步中与10个表单一起出现。在

基于其他问题,我尝试了以下方法,但似乎找不到解决办法:

在视图.py

^{pr2}$

以及

^{3}$

我(非常)不熟悉django,所以任何建议都会有帮助:)


Tags: 用户py表单modelstep步骤数字forms
1条回答
网友
1楼 · 发布于 2024-04-26 00:10:25

试试这个:

def get_form(self, step=None, data=None, files=None):
    if step is None:
        step = self.steps.current
    if step == "1": 
        prev_data = self.get_cleaned_data_for_step(self.get_prev_step(
                                                     self.steps.current))
        cnt = prev_data['extra_from_step0'] #use appropriate key as per your form

        return formset_factory(LegForm, extra=cnt, max_num=cnt) 

    return super(YourFormWizard, self).get_form(step, data, files)

它重写get_form()方法以从上一步获得计数,并使用max_num返回{}。在

作为侧节点,您可能需要使用modelformset_factory()。在

相关问题 更多 >