如何重用Django表单

时间:2019-02-15 06:29:31

标签: python django forms model

我想在以下情况下重用Django表单:

  1. 在显示时将所有表单字段设为“只读”
  2. 在编辑时使用相同的表单获取数据

在显示数据时,我使用了以下功能将字段设为只读:

class form1(modelForm):
    fields...
    def get_form(self, *args, **kwargs):
        super(form1, self).__init__(*args, **kwargs)
        for key in self.fields.keys():
            self.fields[key].widget.attrs['readonly'] = True

我也尝试使用 init 函数,但是在编辑时我无法使用“ form1”,Django仍将表单呈现为只读。

不胜感激,不胜感激。

1 个答案:

答案 0 :(得分:0)

解决方案是这样的

form_to_edit(modelForm):
    fields
    .
    .

form_to_display(form_to_edit):
  def __init__(self, *args, **kwargs):
    super(form_to_edit, self).__init__(*args, **kwargs)
    for key in self.fields.keys():
        self.fields[key].widget.attrs['readonly'] = True

只要必须显示表单,就渲染“ form_to_display”,并进行编辑,则渲染“ form_to_edit”,

form_to_display中的代码使用只读字段创建/初始化form_to_edit