LoginSignup
2
2

More than 3 years have passed since last update.

Djangoにおけるモデル

Last updated at Posted at 2020-04-18

はじめに

ここでは、Djangoのモデルの基本について解説します。

models.pyの設定

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の設定

admin.py
from django.contrib import admin

from .models import SampleModel


admin.site.register(SampleModel)

管理画面でモデルを参照するために、admin.site.register(モデル名)を追記します。

まとめ

ここでは、モデル関連の設定について解説しました。
次回は、ビュー関係について解説する予定です。

2
2
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
2
2