内的值作为文本而不是域有一个简单的方法,使Django的渲染{{myform.name}}
作为渲染Django表单
John Smith
,而不是
<input id="id_name" name="name" value="John Smith" />
内<form>
标签?或者我正在以这种错误的方式去做?
内的值作为文本而不是域有一个简单的方法,使Django的渲染{{myform.name}}
作为渲染Django表单
John Smith
,而不是
<input id="id_name" name="name" value="John Smith" />
内<form>
标签?或者我正在以这种错误的方式去做?
<form>
{% for field in form %}
{{ field.label }}: {{ field.value }}
{% endfor %}
</form>
你也可以使用一个新的widget:我这样做,这样我可以有创建日期的文本显示窗口小部件,以及一个隐藏的形式它的日期相同,所以用户可以看到它,但是它们不能改变它。
这里是一个初始(仍在测试/被清理)版本:
class DayLabelWidget(forms.Widget):
def render(self, name, value, attrs):
final_attrs = self.build_attrs(attrs, name=name)
if hasattr(self, 'initial'):
value = self.initial
if type(value) == type(u''):
value = datetime.date(*map(int, value.split('-')))
return mark_safe(
"%s" % value.strftime("%A (%d %b %Y)")
) + mark_safe(
"<input type='hidden' name='%s' value='%s' />" % (
name, value
)
)
def _has_changed(self, initial, data):
return False
然后你在场上以此为(widget=DayLabelWidget,)
。
而且,不要忘记,你还可以做{{myform.instance.name}}
为什么不使用{{field.data}}?
我想这是你想要什么: http://code.djangoproject.com/ticket/10427
我修补我的Django和瞧...
老话题,但我认为有些人还来这里。
你可以做这样的事情太:
from django.utils.safestring import mark_safe
class PlainTextWidget(forms.Widget):
def render(self, _name, value, _attrs):
return mark_safe(value) if value is not None else '-'
而且在你的表格
class SomeForm(Form):
somename = forms.CharField(widget=PlainTextWidget)
谢谢 - 我见过.label但不.initial。奇怪的是,在“使用表单”文档中甚至没有提到.initial。 – ine 2009-07-15 21:25:59
。初始只在表单第一次出现时正常工作,对吗?例如,如果出现错误并且您重新提交表单,我的经验将不会有初始记录。 – dfrankow 2009-08-21 04:01:33
在Django术语中,这只适用于未绑定的表单。如果您希望它能够同时使用未绑定和已绑定的表单,该怎么办? – dfrankow 2009-08-21 15:44:12