如何用初始数据填充 FormView?
How to populate FormView with initial data?
边看Django的文档边练习。今天我在读 Formsets; https://docs.djangoproject.com/en/4.0/topics/forms/formsets/
现在我正在尝试用初始数据填充通用 FormView。这是代码:
class ArticleFormView(FormView):
# same here, use FormSet instance, not standard Form
form_class = ArticleFormSet
template_name = 'article_form_view.html'
success_url = "/"
def get_initial(self):
init_data = {'value1': 'foo', 'value2': 'bar'}
return init_data
这导致“在 _construct_form 默认值 ['initial'] = self.initial[i]
键错误:0"
所以问题是如何使用初始数据填充 FormView 中的表单集?
您需要将初始数据作为列表传递,其中第 i 个元素是第 i 个表单的初始数据.因此,如果您只想传递第一个表单的初始数据,则将其传递为:
class ArticleFormView(FormView):
form_class = ArticleFormSet
template_name = 'article_form_view.html'
success_url = "/"
def get_initial(self):
return <strong>[</strong>{'value1': 'foo', 'value2': 'bar'}<strong>]</strong> # 🖘 list of dictionaries
如果要将其作为 所有 表单的初始数据传递,可以使用 form_kwargs
参数:
class ArticleFormView(FormView):
form_class = ArticleFormSet
template_name = 'article_form_view.html'
success_url = "/"
def <b>get_form_kwargs</b>(self):
data = super().get_form_kwargs()
data['form_kwargs'] = {'initial': {'value1': 'foo', 'value2': 'bar'}} # 🖘 initial for all forms
return data
边看Django的文档边练习。今天我在读 Formsets; https://docs.djangoproject.com/en/4.0/topics/forms/formsets/
现在我正在尝试用初始数据填充通用 FormView。这是代码:
class ArticleFormView(FormView):
# same here, use FormSet instance, not standard Form
form_class = ArticleFormSet
template_name = 'article_form_view.html'
success_url = "/"
def get_initial(self):
init_data = {'value1': 'foo', 'value2': 'bar'}
return init_data
这导致“在 _construct_form 默认值 ['initial'] = self.initial[i]
键错误:0"
所以问题是如何使用初始数据填充 FormView 中的表单集?
您需要将初始数据作为列表传递,其中第 i 个元素是第 i 个表单的初始数据.因此,如果您只想传递第一个表单的初始数据,则将其传递为:
class ArticleFormView(FormView):
form_class = ArticleFormSet
template_name = 'article_form_view.html'
success_url = "/"
def get_initial(self):
return <strong>[</strong>{'value1': 'foo', 'value2': 'bar'}<strong>]</strong> # 🖘 list of dictionaries
如果要将其作为 所有 表单的初始数据传递,可以使用 form_kwargs
参数:
class ArticleFormView(FormView):
form_class = ArticleFormSet
template_name = 'article_form_view.html'
success_url = "/"
def <b>get_form_kwargs</b>(self):
data = super().get_form_kwargs()
data['form_kwargs'] = {'initial': {'value1': 'foo', 'value2': 'bar'}} # 🖘 initial for all forms
return data