django 1.8公式ドキュメント翻訳:2-1-1モデル構文

27310 ワード

モデル#モデル#
モデルはあなたのデータの唯一の権威のある情報源です.データを格納するために必要なフィールドと動作が含まれています.通常、各モデルはデータベース内の一意のテーブルに対応します.
ベース:
  • 各モデルはdjango.db.models.ModelのPythonサブクラスです.
  • モデルの各属性は、データベース内のフィールドを表します.
  • Djangoは自動的に生成されたデータベースアクセス用のAPIを提供する.詳しくは_クエリー_を実行します.

  • 短い例
    この例では、Personモデルを定義します.first_namelast_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_namelast_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 TABLESQL文は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_衝突、例えばcleansaveまたは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は、フィールドクラスのタイプに応じて、次の情報を決定します.
  • データベース内のカラムタイプ(例えば、INTEGERVARCHAR).
  • フォームレンダリング時に使用するデフォルトHTML_部品_(例えば、