我在表单中有一个动态表单。当我实例化我的表单时,如何从我的视图传递参数?
类似于:
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)
发布于 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')
发布于 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
https://stackoverflow.com/questions/2237064
复制相似问题