モデル#モデル#
モデルはあなたのデータの唯一の権威のある情報源です.データを格納するために必要なフィールドと動作が含まれています.通常、各モデルはデータベース内の一意のテーブルに対応します.
ベース:
各モデルはdjango.db.models.Model
のPythonサブクラスです. モデルの各属性は、データベース内のフィールドを表します. Djangoは自動的に生成されたデータベースアクセス用のAPIを提供する.詳しくは_クエリー_を実行します. 短い例
この例では、
Person
モデルを定義します.
first_name
と
last_name
の2つのプロパティがあります.
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
first_name
と
last_name
はモデルの2フィールドです.各フィールドはクラス属性として指定され、各属性はデータベースのカラムにマッピングされます.
上の
Person
モデルは、データベースに次のようなテーブルを作成します.
CREATE TABLE myapp_person (
"id" serial NOT NULL PRIMARY KEY,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL
);
いくつかの技術上の注意事項:
このテーブルの名前myapp_person
は、モデル内のメタデータに基づいて自動的に生成されますが、別の名前に上書きすることもできますので、詳しくは_Table names_. id
フィールドは自動的に追加されますが、この動作は書き換えられます.詳しくは_自増キーフィールド_です. この例のCREATE TABLE
SQL文はPostgreSQL構文形式を使用していますが、Djangoは_ファイルを設定_で指定したデータベースタイプを使用して、対応するSQL文を使用します. モデルの操作
モデルを定義したらDjangoに伝える必要があります使用_これらのモデル.プロファイル内の
INSTALLED_APPS
設定を変更し、その中に
models.py
アプリケーションの名前を追加します.
たとえば、アプリケーションのモデルが
myapp.models
モジュール(
manage.py startapp
スクリプトがアプリケーションによって作成されたパッケージ構造)にある場合、
INSTALLED_APPS
一部は次のように見えます.
INSTALLED_APPS = (
#...
'myapp',
#...
)
INSTALLED_APPS
に新しいアプリケーション名を追加する場合は、コマンド
manage.py migrate
が実行されていることを確認してください.まず、
manage.py makemigrations
を使用して移行スクリプトを生成できます.
フィールド
モデルに不可欠で最も重要なのは、データベース・フィールドのリストであるフィールド・セットです.フィールドはクラス属性として指定されます.選択したフィールド名が_と一致しないことに注意してください.モデルAPI_衝突、例えば
clean
・
save
または
delete
.
例:
from django.db import models
class Musician(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
instrument = models.CharField(max_length=100)
class Album(models.Model):
artist = models.ForeignKey(Musician)
name = models.CharField(max_length=100)
release_date = models.DateField()
num_stars = models.IntegerField()
フィールドタイプ
モデルの各フィールドは、
Field
サブクラスのインスタンスです.Djangoは、フィールドクラスのタイプに応じて、次の情報を決定します.
データベース内のカラムタイプ(例えば、INTEGER
、VARCHAR
). フォームレンダリング時に使用するデフォルトHTML_部品_(例えば、
、