首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将参数传递给django中的动态表单

将参数传递给django中的动态表单
EN

Stack Overflow用户
提问于 2010-02-10 21:28:07
回答 2查看 22.5K关注 0票数 25

我在表单中有一个动态表单。当我实例化我的表单时,如何从我的视图传递参数?

类似于:

form = DynamicForm("some string argument I'm passing to my form")

这是我的表格:

class DynamicForm(Form):
def __init__(self, *args, **kwargs):
    super(DynamicForm, self).__init__(*args, **kwargs)
    for item in range(5):
        self.fields['test_field_%d' % item] = CharField(max_length=255)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-10 21:36:49

添加它作为关键字参数,假设它被称为my_arg。确保在调用super()之前初始化关键字arg,因为父类的pop()方法不接受额外的关键字参数。

class DynamicForm(Form):
  def __init__(self, *args, **kwargs):
    my_arg = kwargs.pop('my_arg')
    super(DynamicForm, self).__init__(*args, **kwargs)
    for item in range(5):
        self.fields['test_field_%d' % item] = CharField(max_length=255)

当你创建表单时,它是这样的:

form = DynamicForm(..., my_arg='value')
票数 55
EN

Stack Overflow用户

发布于 2019-05-28 02:58:35

您还可以通过覆盖FormMixin的get_form_kwargs来实现这一点,该also在基于类的视图中可用。

class CustomDynamicFormView(FormView):  # inherit any view with formmixin...
      form_class = DynamicForm
      
      def get_form_kwargs(self):
          kwargs = super(CustomDynamicFormView, self).get_form_kwargs()
          kwargs['custom_variable'] = 'my custom variable'
          return kwargs

然后在你的表单中

class DynamicForm(forms.Form):
    def __init__(self, *args, **kwargs):
        my_var = kwargs.pop('custom_variable') 
        # remove this b4 calling super otherwise it will complian
        super(DynamicForm, self).__init__(*args, **kwargs)
        # do what you want with my_var

For more information check here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2237064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档