models.py
class Company(models.Model): name = models.CharField( verbose_name='会社名', max_length=20) class Person(models.Model): name = models.CharField( verbose_name='氏名', max_length=20) age = models.PositiveIntegerField( verbose_name='年齢', blank=True, default='') birth = models.DateTimeField( null=True, blank=True, verbose_name='誕生日', default=None) company = models.ForeignKey( Company, null=True, on_delete=models.CASCADE, related_name='person')
models.pyは、データベースにテーブルを作成したりするのに使用されます。
の形式でテーブルを作成することができます。
models.CharFieldは文字列
models.PositiveIntegerFieldは正の整数
models.DateTimeFieldは日時
models.ForeignKeyは多側のテーブルからの他の1側のテーブルへのへのリレーション
となっています。
また、verbose_nameはadminページに表示されるときの列名となっています。
上の例では、Companyテーブルは
上限20文字の文字列のnameフィールド
Personテーブルは
上限20文字の文字列のフィールドnameフィールド
正の整数のageフィールド(未記入時は'')
日時型のbirthフィールド(未記入時はNone)
Companyテーブルへのリレーションのcompanyフィールド
となっています。
リレーションは
models.Foreigkeyは多対1の多側からのリレーション
models.OneToOneFieldは1対1でのリレーション
となっています。
また、1側から多側のデータを取得したいときなどはrelated_nameで指定されている文字列を使用してさかのぼります。
models.py内でクラスを定義後プロジェクトのルートディレクトリで、
と入力することでテーブルが作成されます。
class テーブル名(model.Model):
定義するカラム名
定義するカラム名
の形式でテーブルを作成することができます。
models.CharFieldは文字列
models.PositiveIntegerFieldは正の整数
models.DateTimeFieldは日時
models.ForeignKeyは多側のテーブルからの他の1側のテーブルへのへのリレーション
となっています。
また、verbose_nameはadminページに表示されるときの列名となっています。
上の例では、Companyテーブルは
上限20文字の文字列のnameフィールド
Personテーブルは
上限20文字の文字列のフィールドnameフィールド
正の整数のageフィールド(未記入時は'')
日時型のbirthフィールド(未記入時はNone)
Companyテーブルへのリレーションのcompanyフィールド
となっています。
リレーションは
models.Foreigkeyは多対1の多側からのリレーション
models.OneToOneFieldは1対1でのリレーション
となっています。
また、1側から多側のデータを取得したいときなどはrelated_nameで指定されている文字列を使用してさかのぼります。
models.py内でクラスを定義後プロジェクトのルートディレクトリで、
python manage.py makemigrations
python manage.py migrate
python manage.py migrate
と入力することでテーブルが作成されます。