はじめに
ここでは、Djangoのモデルの基本について解説します。
models.pyの設定
from django.db import models
class SampleModel(models.Model):
# id = models.AutoField(primary_key=True)
char_sample = models.CharField(max_length=200)
char_with_null = models.CharField(max_length=10, blank=True, null=True)
char_options = models.CharField(choices=(('one', 1), ('two', 2)))
text_sample = models.TextField()
bool_sample = models.BooleanField(default=False)
datetime_created = models.DateTimeField(auto_now_add=True)
datetime_updated = models.DateTimeField(auto_now=True)
date_sample = models.DateField()
def __str__(self):
return self.char_sample
Primary key
primary keyは明示しなくても、自動的に設定されます。
ビューなどでは、pk
などといった形で参照することができます。
CharField
文字を入力するフィールドです。HTMLタグでは<input type="text">
に対応します。
max_length
(最大文字数)は必ず明示する必要があります。
また、blank=True
とすると、バリデーション時にblankを許容し、null=True
とすると、データ登録時にnullが許容されます。
blank=
やnull=
は、他のフィールドでも使うことができます。
TextField
こちらも文字を入力するフィールドです。HTMLタグでは<textarea>
に対応するもので、大量の文字も入力することができます。
BooleanField
真偽値を受け付けるフィールドです。
default=False
とすると、データ登録時に指定がなかった場合はFalse
として扱われます。
default=
は他のフィールドでも使うことができます。
DateTimeField
日時を入力するフィールドです。
auto_now_add=True
とすると、最初の1回だけそのタイミングの日時を登録し、その後は更新されません。
auto_now=True
とすると、登録タイミングの日時が自動的に更新されます。
DateField
日付を入力するフィールドです。
__str()__関数
最後の__str__
関数は、管理画面でモデルを参照するときに、レコードの名前をprimary keyではなく、指定したフィールドをタイトルとして参照するために書いています。
admin.pyの設定
from django.contrib import admin
from .models import SampleModel
admin.site.register(SampleModel)
管理画面でモデルを参照するために、admin.site.register(モデル名)
を追記します。
まとめ
ここでは、モデル関連の設定について解説しました。
次回は、ビュー関係について解説する予定です。