Django:如何在表单字段呈现之前修改表单字段的值,但是在表单初
发布时间:2020-12-20 13:22:10 所属栏目:Python 来源:网络整理
导读:给定一个表单,我想在字段呈现之前更改字段上的值.这就是我正在尝试的: 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_
给定一个表单,我想在字段呈现之前更改字段上的值.这就是我正在尝试的:
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 我以为一切都存储在数据中,但我想数据已经传递到各个字段(或小部件)了?那么我需要修改哪些属性呢? 解决方法
我希望这有帮助:
这是在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 正如您所看到的,有一个名为“self.initial”的属性,它将作为初始数据传递给新创建的表单.如果要使用_construct_form添加新表单并设置自定义初始数据,则应在调用_construct_form之前修改“self.initial”. Initial必须是一个字典,其中键是字段名称,值是字段所需的值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |