フィールドオプションの共通項について解説
フィールドオプション | 使い方 |
---|---|
blank | 入力を必須にするかどうか |
null | データベースのnullを許容するかどうか |
unique | データベース上で一意制約を設定 |
choices | セレクトボックスを作成 |
verbse_name | 管理画面でのフィールド名表示を変更させる |
default | デフォルト値の設定 |
primary_key | プライマリーキーの設定 |
blankとnull
blankとnullは同じような機能を持っていると思われがちですが、全く異なるオプションです。
フィールドオプションblankは、Webサイト上のフォームからデータを送信する際、そのフィールドの入力を必須にするかどうかを指定します
フィールドオプションnullは、データをデータベースに登録する際、そのフィールドのデータが空でも登録するかどうかを指定します。
blankはサイトの入力フォーム、nullはデータベースと覚えるとわかりやすい
unique
オプションuniqueでTrueを指定すると、そのフィールド(カラム)は
データベース上で一意制約を受けるようになります。
choices
オプションchoicesを使うことで、選択をセレクトボックスにすることができる
choicesのサンプルコード
LANGUAGE_CHOICES = [ ('English', 'ENGLISH'), ('Japanese', 'JAPANESE') ] class Post(models.Model): title = models.CharField(max_length=255) category = models.CharField(max_length=30, choices=CATEGORY_CHOICES) body = models.TextField()
タプルの第一要素はデータベースに登録されるデータ、
第二要素はセレクトボックスで表示される内容です。
verbose_name
フィールドにオプションverbose_nameを指定することで、管理画面上でのフィールド名を
指定した文字列にすることができます。
class Meta中にもverbose_nameは指定することができ、その場合は
管理画面上のテーブル名を指定した値にできます。
default
オプションdefaultでそのフィールドのデフォルト値を指定することができます。
primary_key
オプションprimary_keyをTrueにすると、そのフィールドをテーブル(モデル)の主キーにできます。
モデル内に主キーをフィールドに設定しなかった場合は、自動的に以下のIntegerFieldが追加されます。
id = models.AutoField(primary_key=True)
モデル内には1つ以上のprimary_keyが必要なため、モデル内に主キーフィールドがないと上記のidフィールドが自動追加されるのです。
今までの事を踏まえて
次回はmodels.pyの作業内容や備考などはTextFieldに設定を変更する