ryotankの備考録日記

趣味の電子工作についての備考録などなど

電子工作作業報告書管理アプリその20

フィールドオプションの共通項について解説

フィールドオプション 使い方
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に設定を変更する