Django v1.0 documentation

モデルの Meta オプション

revision-up-to:8961 (1.0)

このドキュメントでは、モデルの内部クラス Meta に指定できる メタデータオプション について解説しています。

Meta オプション

abstract

Options.abstract

True に設定すると、モデルを 抽象ベースクラス にします。

db_table

Options.db_table

モデルの使うデータベーステーブルの名前です:

db_table = 'music_album'

テーブル名

手間を省くため、 Django はモデルクラスやアプリケーションの名前を元にデータ ベーステーブルの名前を導出します。モデルのデータベーステーブル名は、モデル の「アプリケーションラベル (app label)」、つまり manage.py startapp で 指定した名前と、モデルのクラス名をアンダースコアで結んで生成します。

例えば、 (manage.py startapp bookstore で作成した) bookstore という アプリケーションの中に class Book で定義したモデルがあった場合そのデー タベーステーブルの名前は bookstore_book です。

データベーステーブル名をオーバライドしたければ、 class Metadb_table パラメタを設定します。

データベーステーブル名が SQL の予約語と一致している場合や、ハイフンのように Python の変数名として扱えない文字を含んでいても問題ありません。 Django はカ ラムとテーブル名を舞台裏でクオート処理するからです。

db_tablespace

Options.db_tablespace
Django 1.0 で新たに登場しました.

このフィールドをインデクス化する際に、データベースのテーブルスペース上での フィールドのインデクスの名前に使います。テーブルスペースをサポートしていな いバックエンドでは、このオプションは無視されます。

get_latest_by

Options.get_latest_by

モデル中の DateField または DateTimeField の名前です。こ のオプションは、モデルの Managerlatest メソッ ドが使うデフォルトのフィールドを指定します。

例えば:

get_latest_by = "order_date"

詳しくは latest() を参照してください。

order_with_respect_to

Options.order_with_respect_to

オブジェクトを指定のフィールドで「並べ替え可能 (orderable)」にします。この オプションを使うのは、リレーションの張られたオブジェクトを、親オブジェクト に従って並べ替えたい場合がほとんどです。例えば、 AnswerQuestion にリレーションを張っており、一つの Question に複数の Answer があっ て、 Answer の順番が重要である場合は以下のようにします:

class Answer(models.Model):
    question = models.ForeignKey(Question)
    # ...

    class Meta:
        order_with_respect_to = 'question'

ordering

Options.ordering

オブジェクトのリストを取得するときに使われる、オブジェクトのデフォルトの並 び順規則です:

ordering = ['-order_date']

値は文字列のタプルやリストです。各文字列はフィールドの名前で、降順に並べる 場合にはオプションの "-" を先頭に付けます。先頭に "-" のないフィールドは昇 順に並べられます。順番をランダムにするには "?" を使って下さい。

Note

ordering にいくつフィールド名を指定しても、 admin は先 頭のフィールドだけを考慮します。

例えば、 pub_date フィールドで昇順に並べる場合には以下のようにします:

ordering = ['pub_date']

pub_date フィールドで降順に並べる場合には以下のようにします:

ordering = ['-pub_date']

pub_date フィールドで降順に並べ、さらに author で昇順に場合には以下 のようにします:

ordering = ['-pub_date', 'author']

permissions

Options.permissions

オブジェクトの生成時にパーミッションテーブルに追加するパーミッションのリス トです。 admin セットをもつオブジェクトには、追加、削除、変更のパーミッ ションが自動的に生成されます。以下の例では、 can_deliver_pizzas という追 加のパーミッションを定義しています:

permissions = (("can_deliver_pizzas", "Can deliver pizzas"),)

(permission_code, human_readable_permission_name) の形式をとる 2 要素の タプルからなるリストです。

unique_together

Options.unique_together

組み合わせとして一意にしなければならないフィールドセットのリストです:

unique_together = (("driver", "restaurant"),)

このリストは、フィールド名のリストからなるリストです。各要素のリストに入っ ているフィールドの値の組み合わは、データベース上で一意でなければなりません。 この制約は Django の admin 上で使われるとともに、データベースレベルでも強制 されます (すなわち、適切な UNIQUE 文が CREATE TABLE 文に入ります)。

Django 1.0 で新たに登場しました.

便宜上、 unique_together は一つのリストのときは単一セットのフィールドと して扱います:

unique_together = ("driver", "restaurant")

verbose_name

Options.verbose_name

人間可読なオブジェクト名の単数形です:

verbose_name = "pizza"

この引数を指定しない場合、Django はクラス名を解体した文字列を使います。例え ば CamelCasecamel case になります。

verbose_name_plural

Options.verbose_name_plural

オブジェクトの複数形名です:

verbose_name_plural = "stories"

この引数を指定しない場合、Django は verbose_name + "s"`` を使います。