加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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必须是一个字典,其中键是字段名称,值是字段所需的值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读