2009-07-15 3 views

答えて

21
<form> 
    {% for field in form %} 
      {{ field.label }}: {{ field.value }} 
    {% endfor %} 
</form> 

あなたはまた新しいウィジェットを使用することができ、ここでForm fieldsを見て、Working with forms

+0

おかげで - 私は.LABELしかし.initialない見ていたし。不思議なことに、.initialは "フォームを使って作業する"文書でも言及されていません。 – ine

+0

.initialはフォームが初めて表示されたときにのみ動作します。たとえば、エラーがあり、フォームを再提示すると、私の経験ではイニシャルはありません。 – dfrankow

+0

Djangoの用語では、これはバインドされていないフォームでのみ機能します。バインドされていないフォームとバインドされたフォームの両方で動作させたい場合はどうすればよいですか? – dfrankow

3

:私はこれをしなかった私は、日付のテキスト表示を作成したウィジェット、およびとの隠されたフォームを持つことができるように、同じ日付であるため、ユーザーに表示される可能性がありますが、変更することはできません。あなたはその後、(widget=DayLabelWidget,)としてフィールドにこれを使用

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 

:ここ

は初期(まだクリーンアップする/テスト)のバージョンです。また

5

、使用しないのはなぜあなたも{{myform.instance.name}}

+0

これはなんですか?それはどこに文書化されていますか? – dfrankow

+0

form.instanceは、バインドされたフォームが表すオブジェクトを返します。 http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-clean-methodこちらはモデルフォームでのみ動作することを言及する必要があります – priestc

+0

ああ、GoogleのアプリエンジンModelFormをサポートしていないので、Formを使用しています。 – dfrankow

2

を行うことができます忘れないでください{{field.data}}?

+0

テンプレートにないビューで実行する必要があるため(テンプレートはループ) –

11

古い話題を私のジャンゴと出来上がりをパッチし、私は何人かの人々はまだここに来ると思います。

あなたもこのような何かを行うことができます。

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) 
関連する問題