hikaru’s diary

Django Engineer

【Django】モデルについていろいろ書く#1

はじめに

最近書けていなかったのでたまには更新しようかなと思います。
モデルのページを順に読んで気になったところはメモしていくっていう形で書いています。
モデルとデータベース | Django ドキュメント | Django

基本
# ドキュメントから引用
from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

こんな感じで適当に書いたらmaemigrationsコマンドを実行
アプリ/migratinosにファイルが生成されるのでmigrateでデータベースに入力される
python manage.py sqlmigrate app 0001でSQL文の発行ができる

フィールドオプション

null,blank,choices,default,help_text,primary_key,uniqueの7つです
これらはどのフィールドでも利用できるそうです。

DateFieldのdefaultには設定方法は複数はあります。

from django.utils import timezone

class DateFieldSample(models.Model):
    a = models.DateField(auto_now=True)  # 更新日時などに使う
    b = models.DateField(auto_now_add=True)  # 作成日時などに使う
    c = models.DateField(default=timezone.now)  # cと同じ、datetimeはダメ


a,bでは手動で日時を変えられないことに注意。
私はadminサイトでトラブルに合いました。

uniqueは複数フィールドでの設定もできます。

    class Meta:
        db_table = 'kinmu'
        constraints = [
            models.UniqueConstraint(
                fields=['name', 'hiduke'],
                name="name_hiduke_unique"
            )
        ]




今日はここまでにします。お疲れ様でした。