Hello World.
LiSMOtechの久津間です。
この記事ではDjangoで開発を進める時に良く使うモデルフィールドについて解説していきます。
フィールドの型、意味、使い方などの理解を深め、フィールド定義を行う際の辞書代わりや、Djangoを使用したWebアプリケーション開発に活かしていただけると幸いです。
目次
Djangoでテーブル定義を行う際はmodels.pyに定義を行なっていきます。
フィールド定義を行う際は、以下のようにフィールドタイプとフィールドオプションを記載します。
フィールド名 = models.フィールドタイプ(フィールドオプション,フィールドオプション)
以下の例ではCompanyモデルを定義する例となります。
class Company(models.Model):
name = models.CharField('会社名', max_length=40)
created_at = models.DateTimeField('作成日', auto_now_add=True)
update_at = models.DateTimeField('更新日', auto_now=True)
文字列を扱うフィールドについて解説していきます。
CharFiledは小 – 大サイズの文字列を保存するためのフィールドです。
max_length(最大文字数)の文字数制限を表すフィールドオプションが必須となります。
(参考例)
name = models.CharField('会社名', max_length=40)
TextFiledは多量の文字列を保存するためのフィールドです。
保存するテキストサイズが多いのに適しているため、ブログや自己紹介などに適しています。
(参考例)
history = models.TextField('沿革')
EmailFiledは値が有効な電子メールアドレスであることを確認してくれるCharFiledです。
メールアドレスを利用する場合はこちらを使用します。
また、EmailValidatorを使ってインプットを検証してくれます。
(参考例)
email = models.EmailField('メールアドレス', max_length=254)
URLを保存するためのフィールドです。
URLValidator によって検証される、URL の CharFieldになります。
(参考例)
link = models.URLField('リンク', max_length=200)
SlugFiledは、文字列がアルファベット、数字、アンダーバー、ハイフンを組み合わせた文字列を保存できるフィールドです。
よくあるのがブログエントリのURLなどになります。
(参考例)
slug = models.SlugField('スラグ')
数値を扱うフィールドについて解説していきます。
IntegerFieldは、整数値の最小値-2147483648から最大値2147483647までの値をサポートしています。
(参考例)
employee_num = models.IntegerField('従業員数', default=0)
FloatFieldは、浮動小数点数を扱うことができるフィールドです。
(参考例)
age_ave = models.FloatField('平均年齢', default=0)
AutoFieldは、利用可能なIDに応じて、自動的にインクリメントするIntegerFieldです。
通常は直接使う必要はなく、指定しない場合は、主キーのフィールドが自動的にモデルに追加されます。
論理値を扱うフィールドについて解説していきます。
TrueまたはFalseの真偽値を扱うフィールドです。
主にチェックボックスなどで使われています。
(参考例)
is_new = BooleanField('初回確認')
二値を扱うフィールドについて解説していきます。
DateFieldは、日付データを保存するためのフィールドです。
Pythonでdatetime.dateインスタンスによって表される日付になります。
オプションauto_nowをTrueにすることで、オブジェクトが変更される度に自動的に現在の日付が保存され、オプションauto_now_addをTrueにすると、オブジェクトが最初に作成されたときに自動的に現在の日付が保存されます。
共にデフォルトはFalseです。
(参考例)
created_at = models.DateTimeField('作成日', auto_now_add=True)
update_at = models.DateTimeField('更新日', auto_now=True)
DateTimeFieldは、日付及び時刻を保存するフィールドです。
Pythonでdatetime.datetimeインスタンスによって表される日付と時刻です。
(参考例)
event = models.DateTimeField('イベント日時')
TimeFieldは、時刻を保存するためのフィールドです。
Pythonでdatetime.timeインスタンスによって表される時刻になります。
(参考例)
event = models.TimeField('イベント時')
ファイルを扱うフィールドについて解説します。
FileFieldは、ファイルアップロードのフィールドです。
(参考例)
attach = models.FileField('添付ファイル', upload_to='uploads/')
ImageFieldは、画像をアップロードするためのフィールドです。
(参考例)
image = models.ImageField(upload_to='images/')
Djangoのリレーションを表すフィールドについて解説します。
ForeignKeyは、別のモデルと一対多の関係を作ることができるフィールドです。
(参考例)
partner = models.ForeignKey(Partner, on_delete=models.CASCADE)
OneToOneFiledはモデル同士を一対一の関係を作ることができるフィールドです。
(参考例)
partner = models.OneToOneField(Partner, on_delete=models.CASCADE)
ManyToManyFieldは、他モデルと多対多の関係を作ることができるフィールドです。
(参考例)
partner = models.ManyToManyField(Partner)
その他に役立つフィールドについて解説します。
UUIDFieldは、UUID (Universally Unique Identifier) を保持するためのフィールドです。
Python’s UUID クラスを使います。 PostgreSQL 上で使われるとき、uuid データ型の中に保持し、それ以外は char(32) の中に保持します。
(参考例)
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
今回の記事ではDjangoにおける良く使うフィールドについて、解説を行いました。
参考例をつけているので、チートシートのような使い方もできるのではないかと思います。
また、フィールドオプションについても記載していきたいと思っているので、こちらの記事をアップデートするか、別の記事でご案内できればと思っています。
NEXTGATE LiSMOtechでは中小企業を中心にブランディング・WEBマーケティングを活用したWEB戦略を提供しています。
企業課題・問題に関するご相談、WEBサイト制作やグラフィックデザイン制作のクリエイティブに関するご相談やご質問、お見積りなどお気軽にお問い合わせください。
平日10:00〜19:00
© NEXTGATE LiSMOtech All rights reserved