python - 如何获取 django FormWizard 中上一步的数据

标签 python django formwizard

请推荐一下如何获取向导第一步中收到的数据,并以第二步的形式使用它:

表单.py

# First step form
class W1_ParamForm(forms.Form):
    cities = forms.ModelChoiceField( label = 'City', 
        queryset=City.objects.all().order_by('name') )

# Second step form
class W1_SelectForm(forms.Form):
    oEstates = MyModelMultipleChoiceField( 
        queryset = RealEstate.objects.
            filter(city_id__exact = ...).
            order_by('priceM'),
        widget = forms.CheckboxSelectMultiple,
        required = False)

此处... - 参数,包含城市ID,在第一种形式W1_ParamForm中选择。问题 - 如何以第二种形式获得它!

View .py

class W1_Estim(SessionWizardView):
    template_name = "w1_estim.html"

    def done(self, form_list, **kwargs):
        form_data = [form.cleaned_data for form in form_list]       
        return render_to_response('w1_done.html', {'form_data': form_data})

url.py

urlpatterns = [
 ...
# Wizard start
   url(r'^doestim$', W1_Estim.as_view([W1_ParamForm,W1_SelectForm]), name='doestim'),
 ...

非常感谢!

最佳答案

我明白了!为了接收上一步的数据,必须

A) 为 View 类 W1_Estim 实现 get_form_initial(self, step)

def get_form_initial(self, step):
   if step == '1': 
      # on SECOND step get data of first step
      step0data = self.storage.get_step_data('0')
      if step0data:
         cities = step0data.get('cities', '')
         return self.initial_dict.get(step, {'cities': cities})
   return self.initial_dict.get(step, {})

B) 实现表单类 W1_SelectForm 的构造函数

def __init__(self, *args, **kwargs):
   c = kwargs['initial']['cities']
   self.oEstates = ModelMultipleChoiceField( 
      queryset = RealEstate.objects.
      filter(city_id = c).
      order_by('priceM'),
      widget = forms.CheckboxSelectMultiple,
      required = False)
   # NEED TO INCLUDE field oEstates into "declared_fields"!!!
   self.declared_fields['oEstates']=self.oEstates
   # superclass constructor ought to be called only AFTER 
   # including new field of class into "declared_fields" !!!
   super(W1_SelectForm, self).__init__(*args, **kwargs)

就这些了!

关于python - 如何获取 django FormWizard 中上一步的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42082403/

相关文章:

ruby-on-rails - 未定义的方法 `include?' 为 nil :NilClass with partial validation of wizard gem

jquery - 如何在使用表单向导时运行 jquery validate()?

python - 具有唯一 ID 的元素的替代选择 - python selenium?

python - 当您只有一个核心时,是否有兴趣使用超过 1 个 worker ?

python - 用于大数据的 Python 替代方案

python - 为什么 celery 任务不起作用?

python - Django - QuerySet - 获取所有父对象中所有确定的子对象的计数

javascript - Bootstrap Formwizard - 如果提交 ajax 响应的每个页面表单出现错误,则防止滚动到下一步

Python:使用 minidom 搜索具有特定文本的节点

python : get the size of a rendered web page