Dou*_*ank 7 django django-forms
我正在努力解决如何在Django中最好地创建可以用于显示或编辑数据的HTML页面.也就是说,我希望字段的值在显示模式下显示为文本,但在编辑/添加模式时显示在它们的小部件中.似乎Django不是为此而设计的:字段总是出现在它们的小部件中(例如,文本输入,文本区域等).
是否有一种常用的技术来处理这种情况,而不是使用一种形式,而不是另一种?
我在想一个可以用于每个表单字段的自定义模板标签过滤器,例如:
{{form.field_name | render_field:mode}}
其中render_field将根据模式返回字段的HTML小部件,或仅返回值作为文本.
我错过了什么,或者这是一个可行的解决方案吗?
显然,回答我自己的问题。我最终得到了一个由三部分组成的解决方案:
步骤1:
form.model = 模型(...)
第二步:
{{form.field1.label}}
{% 渲染 form.field1 用户操作 %}
{{form.field2.label}}
{% 渲染 form.field2 用户操作 %}
第三步:
就像是:
def render(formfield, user, action, default_text="Private"):
如果不是 user.is_authenticated():
动作=“查看”
如果动作==“查看”:
如果 user.is_authenticated():
字段名 = formfield.name
retval = str(getattr(formfield.form.model, fieldname))
别的:
retval = default_text
别的:
retval = formfield.as_widget()
返回值
| 归档时间: |
|
| 查看次数: |
3220 次 |
| 最近记录: |