我想实现一个简单的两部分FormWizard。
表格1将动态生成如下内容:

class BuyAppleForm(forms.Form):
   creditcard = forms.ChoiceField(widget = forms.RadioSelect)
   type = forms.ChoiceField(widget = forms.RadioSelect)
   def __init__(self,*args, **kwargs):
        user = kwargs['user']
        del kwargs['user']

        super(BuyAppleForm, self).__init__(*args, **kwargs)

        credit_cards = get_credit_cards(user)
        self.fields['creditcard'].choices = [(card.id,str(card)) for card in credit_cards]

        apple_types= get_types_packages()
        self.fields['type'].choices = [(type.id,str(type)) for type in apple_types]

这将动态创建一个包含可用选项列表的表单。

第二种形式,我实际上不需要任何输入。我只想显示一个包含信用卡信息,苹果信息和金额(总计,税金,运费)的确认屏幕。用户单击“确定”后,我希望开始购买苹果。

我可以通过在kwargs中传入request.user对象来实现单一表单方式。但是,对于FormWizard,我无法弄清楚。

我解决问题的方法是否错误,FormWizard是否不是执行此操作的正确方法?如果是,Form __init__方法如何从HTTP请求访问用户对象?

最佳答案

我没有使用过它,但是对于您描述的情况,似乎您可能想尝试使用FormPreview而不是FormWizard。从文档中听起来像您所追求的。

关于django - 具有动态表单的Django FormWizard,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/358430/

10-11 09:01