django - 重用表单只显示数据的简单方法?

时间:2011-12-13 03:18:51

标签: django django-templates django-views

我创建了一个包含许多字段的表单。在另一个视图中,我需要显示在表单中输入的数据。有没有一种简单的方法可以重复使用表单,但是这次显示输入的数据(即'readonly')?

2 个答案:

答案 0 :(得分:2)

您可以对表单进行子类化,并使用属性disabled设置所有表单小部件。或者将所有字段设置为仅呈现文本而没有输入框的小部件(如django admin readonly小部件)。

class ReadOnlyForm(MyForm):
    def __init__(self, *args, **kwargs):
        super(ReadOnlyForm, self).__init__(*args, **kwargs)
        for field in self.fields.values():
            field.widget.attrs['disabled'] = 'true' # or replace the widget
            # with one that just returns the value in plain html

readonly_form = ReadOnlyForm(the_data)

答案 1 :(得分:0)

另一种方法是控制表单的呈现方式:

{% for field in form %}
        {{ field.label }}: {{ field.value }}
{% endfor %}