連投すいません。
カレンダー埋めたいなと思いまして・・・
- Django 1.9.11
- Python 3.5.2
この記事について
ずっとFormのことばっかり書いてますが、
- Formフィールドの並び順の設定
- crispy form(さわりの部分のみ)
について書いてます
ModelForm.field_order
Model Formにはfield_order
というフィールド?があります。
これは、文字通りフィールドの並び順を設定するフィールドです。
class MyForm(ModelForm):
field_order = ["name", "age", "address", ]
のようにすると、フィールドの並び順が設定されます。
先頭のフィールドだけ決めたい、という時は、そのフィールドだけ書けばOKです。
残りはDjangoによって決定されます。
そうすれば、
<form method="post">
{% csrf_token %}
{{ form }}
<button type="submit">
</form>
のようにした時でも並び順が思い通りになります。
crispy form
私はよくTwitter Bootstrap を使うのですが、{{ form }}
ではCSSのclass
を指定することができません。
そういう時はcripsy formを使います。
pip install django-crispy-forms
これで入ります。
あとは、settings.py
で
INSTALLED_APPS += ('crispy_forms', )
CRISPY_TEMPLATE_PACK = 'bootstrap3'
として、テンプレートで
{% load crispy_forms_tags %}
<form method="post">
{% csrf_token %}
{{ form|crispy }}
<button class="btn btn-primary" type="submit">
</form>
とすれば、あら不思議。
ちゃんとスタイルが設定されたフォームになります。
もっと詳しく設定したい場合はドキュメントを見てください。
また、GoDjangoにcrispy formのスクリーンキャストがあったのでリンクを貼っておきます。
私が紹介した使い方よりももう少し深く使ってます。
最初に書いたフィールドの並び順と、crispy formを使えば、フォームのレイアウトはかなり楽になると思います。
特にcrispy formはかなりのことができるのでオススメのモジュールです。
最後に
ネタ切れです。