Djangoベース-モデル、モデルフィールド、フィールドオプション

2430 ワード

ドラムモデル


ビュー関数で、データベースにいくつかのアクションを要求する場合は、SQL構文を使用します.
SQL(Structured Query Language)
Query:情報収集を要求するためのコンピュータ言語
SQL:リレーショナル・データベース管理システムのデータを管理するために設計された専用プログラミング言語
RDBMSタイプ:MySQL、MariaDB、PostgreSQL
障害モデルはリレーショナル・データベースのみをサポートします(RDBMS)
障害モデルによるSQLの作成/実行(ORM)

Django Model


内蔵ORM
ORMの役割:SQLを記述する必要がなく、ストレージモデルからデータベースにアクセスできます.(クエリー/追加/変更/削除)
(重要)SQLがわからなくてもいいというわけではありません.少なくとも私が作成したコードがどのようなSQLを生成するかを検証することができます.
通常、1つの倉庫プロジェクトでDBが使用されます.
Pythonクラスをデータベース・テーブルにマッピング
モデルもでる:DBテーブルへのマッピングDBてーぶるへのまっぷ
モデル例:DBテーブルの1行目

アスペクトカスタムモデルの定義


位置:特定のapp/models.py
まず、データベース・テーブルの構造/タイプを設計し、モデルを定義します.
モデルクラス名は単数形式を使用します.(ポストではなくポスト)
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=100) 
    # 길이 제한이 있는 문자열
    
    content = models.TextField()           
    # 길이 제한이 없는 문자열
    
    created_at = models.DateTimeField(auto_now_add=True) 
    # 해당 레코드 생성시 현재 시간 자동저장
    
    updated_at = models.DateTimeField(auto_now=True) 
    # 해당 레코드 갱신시 현재 시간 자동저장
    # DB에서는 길이제한 유무에 따라서 문자열 필드타입이 다른다.
    # 길이 제한이 없는 문자열을 많이 쓰면 성능이 좋지 않다.

モデル登録プロセス

  • models.pyでモデルクラスを定義する(上記コードを参照)
  • shellから移行し、migrate
  • を実行
  • admin.pyにモデルクラス
  • を登録する
    # 2. shell에서 migrations, migrate 실행
    $ python3 manage.py makemigrations
    $ python3 manage.py migrate
    # 위 명령을 통해서 앱폴더 아래에 migration 폴더가 생성되고 DB에 테이블을 생성한다.
    # 3. admin.py에 모델클래스 등록
    # 앱폴더/admin.py
    from django.contrib import admin
    from .models import Post
    
    admin.site.register(Post)

    サポートされるモデルフィールドタイプ


    主なフィールドタイプ:AutoField、Boolean Field、CharField、DateTimeField、FielField、ImageField、TextField
    主な関係タイプ:ForeignKey、ManyToManyField、OneToOneField

    プライマリフィールドオプション


    フィールドオプション:各フィールドには独自のオプションがあり、汎用的なアプリケーションオプションもあります.
    空(DBオプション):DBフィールドに空を許可するかどうか(デフォルト:偽)
    ユニーク(DBオプション):ユニーク(エラー:エラー)
    blank:入力値を検証するときに空の値を許可するかどうか(デフォルト:偽)
    default:デフォルト値を指定します.値が指定されていない場合に使用
    verbose name:フィールドラベル.指定されていない場合は、フィールド名が書き込まれます.
    validators:入力値検証を実行する複数の関数を指定します.
    各フィールドに一意のベリファイアが登録されています
    ex):電子メールのみ受信、最大長制限、最小長制限、最大値制限、最小値制限など
    オプション(フォームウィジェット用):選択ボックスのソースとして使用
    help text(フォームwidget用):フィールド入力ヘルプ
    Autonow add:Bool、Trueの場合、レコードの作成時にレコードを現在の時刻に自動的に保存