什么是在Django中使用的Contenttypes?

时间:2013-12-17 14:19:49

标签: django

你能解释一下非常基本的Django内容类型吗?

他们的目的是什么?

1 个答案:

答案 0 :(得分:6)

ContentType只是数据库中的模型和表,其中包含有关django应用程序中所有其他表/模型的信息。

Postgres表:

=> \d django_content_type;

  Column   |          Type          |                           Modifiers
-----------+------------------------+-----------------------------------------
 id        | integer                | not null ...
 name      | character varying(100) | not null
 app_label | character varying(100) | not null
 model     | character varying(100) | not null

postgres中的数据:

=> SELECT * from django_content_type;

 id |         name          |     app_label     |        model        
----+-----------------------+-------------------+---------------------
  1 | permission            | auth              | permission
  2 | group                 | auth              | group
  3 | user                  | auth              | user
  4 | auth user groups      | auth              | authusergroups
...

例如,如果要在应用程序中构建自定义管理员,并获取表格列表,可以使用ContentType模型:

>>> from django.contrib.contenttypes.models import ContentType
>>> tables = ContentType.objects.filter(app_label="my_app")

检查django管理员来源的用例,在那里积极使用的ContentTypes。