mpe*_*pen 5 django django-forms
给定一种形式,我想在呈现字段之前更改其值。这是我正在尝试的:
class RequiredFormSet(BaseFormSet):
def add_form(self):
tfc = self.total_form_count()
self.forms.append(self._construct_form(tfc))
if self.is_bound:
data = self.management_form.data.copy() # make data mutable
data[TOTAL_FORM_COUNT] = self.management_form.cleaned_data[TOTAL_FORM_COUNT] + 1
self.management_form.data = data
else:
self.extra += 1
Run Code Online (Sandbox Code Playgroud)
我以为所有内容都存储在中data,但是我想那data已经传递到各个字段(或小部件)了吗?那我需要精确修改什么属性?
我希望这有帮助:
这是在 BaseFormSet 中创建表单的方法:
def _construct_form(self, i, **kwargs):
"""
Instantiates and returns the i-th form instance in a formset.
"""
defaults = {'auto_id': self.auto_id, 'prefix': self.add_prefix(i)}
if self.is_bound:
defaults['data'] = self.data
defaults['files'] = self.files
if self.initial:
try:
defaults['initial'] = self.initial[i]
except IndexError:
pass
# Allow extra forms to be empty.
if i >= self.initial_form_count():
defaults['empty_permitted'] = True
defaults.update(kwargs)
form = self.form(**defaults)
self.add_fields(form, i)
return form
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,有一个名为“self.initial”的属性,它作为初始数据传递给新创建的表单。如果您想使用 _construct_form 添加新表单并设置自定义初始数据,您应该在调用 _construct_form 之前修改“self.initial”。初始值必须是一个字典,其中键是字段名称,值是您想要的字段值。
| 归档时间: |
|
| 查看次数: |
1975 次 |
| 最近记录: |