djangoのcontenttypes

contenttypesはdjangoでいうアプリの様なもので、modelsとかfieldsとかがある。そのうちのmodelsの中にContentTypeというモデルがある。これがメイン。

ContentTypeとは

簡単に言えば、プロジェクトにインストールされたモデルを管理するモデル インストールされたオブジェクトは自動で生成される。

プロパティ

  • app_label これは、モデルがどのアプリケーションに含まれているかを示す。例えば、プロジェクトmysite内のpollアプリだったらpollになる。ついでに、常にこれはpythonのimport文のドットで区切った最後の単語になる。

  • model これは、モデルの名前。models.Modelを継承したクラスの名前。

  • name barbose nameだと思われる。

メソッド

  • ContentType.get_object_for_this_type(**kwargs) モデルのオブジェクトを持ってくる

  • ContentType.model_class() モデルクラスを持ってくる

contenttypesはアプリケーションなので、同じ様にモデルとかも扱うことができる。 objectsでマネージャーを取って来たりすることができる。

Generic relations

オブジェクトとモデルクラスを結びつける機能。ForeignKeyの強化版。

例えば、ForeignKeyを使うとき、AからBに関係を張りたいとき、AとBっていう名前が必要になる。だけど、ContentTypeを挟んでおくと、これは動的に変えられる様になる。

Reverse Generic Relations

GenericForeignKeyを設定しておくと逆参照ができる。MenyToMenyのGeneric版。 GenericFordignKeyをもつモデルに対して、GenericRelationを張ると参照できる様になる。