revision-up-to: | 8961 (1.0) |
---|
このドキュメントでは、モデルの内部クラス Meta に指定できる メタデータオプション について解説しています。
モデルの使うデータベーステーブルの名前です:
db_table = 'music_album'
手間を省くため、 Django はモデルクラスやアプリケーションの名前を元にデータ ベーステーブルの名前を導出します。モデルのデータベーステーブル名は、モデル の「アプリケーションラベル (app label)」、つまり manage.py startapp で 指定した名前と、モデルのクラス名をアンダースコアで結んで生成します。
例えば、 (manage.py startapp bookstore で作成した) bookstore という アプリケーションの中に class Book で定義したモデルがあった場合そのデー タベーステーブルの名前は bookstore_book です。
データベーステーブル名をオーバライドしたければ、 class Meta に db_table パラメタを設定します。
データベーステーブル名が SQL の予約語と一致している場合や、ハイフンのように Python の変数名として扱えない文字を含んでいても問題ありません。 Django はカ ラムとテーブル名を舞台裏でクオート処理するからです。
このフィールドをインデクス化する際に、データベースのテーブルスペース上での フィールドのインデクスの名前に使います。テーブルスペースをサポートしていな いバックエンドでは、このオプションは無視されます。
モデル中の DateField または DateTimeField の名前です。こ のオプションは、モデルの Manager の latest メソッ ドが使うデフォルトのフィールドを指定します。
例えば:
get_latest_by = "order_date"
詳しくは latest() を参照してください。
オブジェクトを指定のフィールドで「並べ替え可能 (orderable)」にします。この オプションを使うのは、リレーションの張られたオブジェクトを、親オブジェクト に従って並べ替えたい場合がほとんどです。例えば、 Answer が Question にリレーションを張っており、一つの Question に複数の Answer があっ て、 Answer の順番が重要である場合は以下のようにします:
class Answer(models.Model):
question = models.ForeignKey(Question)
# ...
class Meta:
order_with_respect_to = 'question'
オブジェクトのリストを取得するときに使われる、オブジェクトのデフォルトの並 び順規則です:
ordering = ['-order_date']
値は文字列のタプルやリストです。各文字列はフィールドの名前で、降順に並べる 場合にはオプションの "-" を先頭に付けます。先頭に "-" のないフィールドは昇 順に並べられます。順番をランダムにするには "?" を使って下さい。
Note
ordering にいくつフィールド名を指定しても、 admin は先 頭のフィールドだけを考慮します。
例えば、 pub_date フィールドで昇順に並べる場合には以下のようにします:
ordering = ['pub_date']
pub_date フィールドで降順に並べる場合には以下のようにします:
ordering = ['-pub_date']
pub_date フィールドで降順に並べ、さらに author で昇順に場合には以下 のようにします:
ordering = ['-pub_date', 'author']
オブジェクトの生成時にパーミッションテーブルに追加するパーミッションのリス トです。 admin セットをもつオブジェクトには、追加、削除、変更のパーミッ ションが自動的に生成されます。以下の例では、 can_deliver_pizzas という追 加のパーミッションを定義しています:
permissions = (("can_deliver_pizzas", "Can deliver pizzas"),)
(permission_code, human_readable_permission_name) の形式をとる 2 要素の タプルからなるリストです。
組み合わせとして一意にしなければならないフィールドセットのリストです:
unique_together = (("driver", "restaurant"),)
このリストは、フィールド名のリストからなるリストです。各要素のリストに入っ ているフィールドの値の組み合わは、データベース上で一意でなければなりません。 この制約は Django の admin 上で使われるとともに、データベースレベルでも強制 されます (すなわち、適切な UNIQUE 文が CREATE TABLE 文に入ります)。
便宜上、 unique_together は一つのリストのときは単一セットのフィールドと して扱います:
unique_together = ("driver", "restaurant")
人間可読なオブジェクト名の単数形です:
verbose_name = "pizza"
この引数を指定しない場合、Django はクラス名を解体した文字列を使います。例え ば CamelCase は camel case になります。
オブジェクトの複数形名です:
verbose_name_plural = "stories"
この引数を指定しない場合、Django は verbose_name + "s"`` を使います。
Aug 31, 2012