Django中如何将模型字段值以文本形式展示而非可编辑字段
解决Django模板中表单字段显示为输入框而非文本的问题
给你几个实用的解决方案,根据你的场景选就行:
直接调用模型实例的字段值
如果你的视图已经把Profile实例(比如profile变量)传到模板里了,完全不用通过表单字段渲染,直接写:{{ profile.straat }}这是最简单直接的方式,直接展示数据库里存储的文本值,不会生成任何表单控件。
渲染表单字段的value属性
要是你还需要保留表单的上下文,只是不想显示输入框,可以直接取字段的value属性:{{ form.straat.value }}这样只会输出字段的文本内容,不会渲染整个输入控件。
修改表单字段为只读/禁用
如果必须保留表单控件但不让用户编辑,可以在ProfileForm的字段定义里添加widget属性:# forms.py from django import forms from .models import Profile class ProfileForm(forms.ModelForm): class Meta: model = Profile fields = ['straat', ...] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # 设置为只读 self.fields['straat'].widget.attrs['readonly'] = 'readonly' # 或者设置为禁用(禁用后表单提交时不会传递该字段值) # self.fields['straat'].widget.attrs['disabled'] = 'disabled'这种方式会保留输入框的样式,但用户无法编辑内容,适合需要展示表单结构但不允许修改的场景。
内容的提问来源于stack exchange,提问作者Roel Knippen
相关产品推荐
相关产品推荐

