22
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DjangoAdvent Calendar 2016

Day 9

Django Formの落穂拾い

Last updated at Posted at 2016-12-08

連投すいません。
カレンダー埋めたいなと思いまして・・・

  • Django 1.9.11
  • Python 3.5.2

この記事について

ずっとFormのことばっかり書いてますが、

  • Formフィールドの並び順の設定
  • crispy form(さわりの部分のみ)

について書いてます

ModelForm.field_order

Model Formにはfield_orderというフィールド?があります。
これは、文字通りフィールドの並び順を設定するフィールドです。

forms.py
class MyForm(ModelForm):
    field_order = ["name", "age", "address", ]

のようにすると、フィールドの並び順が設定されます。
先頭のフィールドだけ決めたい、という時は、そのフィールドだけ書けばOKです。
残りはDjangoによって決定されます。

そうすれば、

form.html
<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

settings.py
INSTALLED_APPS += ('crispy_forms', )
CRISPY_TEMPLATE_PACK = 'bootstrap3'

として、テンプレートで

form.html
{% load crispy_forms_tags %}
<form method="post">
{% csrf_token %}
{{ form|crispy }}
<button class="btn btn-primary" type="submit">
</form>

とすれば、あら不思議。
ちゃんとスタイルが設定されたフォームになります。

もっと詳しく設定したい場合はドキュメントを見てください。

また、GoDjangocrispy formのスクリーンキャストがあったのでリンクを貼っておきます。
私が紹介した使い方よりももう少し深く使ってます。

最初に書いたフィールドの並び順と、crispy formを使えば、フォームのレイアウトはかなり楽になると思います。

特にcrispy formはかなりのことができるのでオススメのモジュールです。

最後に

ネタ切れです。

22
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?