如果你在Django中创建新项目后第一次迁移,你会发现Django创建了如下所示的表。
auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
django_admin_log
django_content_type
django_migrations
django_session
现在我了解到这些表是因为settings.py中的INSTALLED_APPS下的行而创建的。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
所以我开始研究auth文件夹下的models.py(在我安装的Django文件夹中)。我预计models.py会有六个类。因为我通过ORM(Ojbejct Relation Mapping)学习了Class转向表。
auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
我可以找到名为' Permission'的课程,这是一个名为' Group'以及一个名为' User'在auth文件夹下的models.py中。我认为那些制作了表格' auth_permission',' auth_group'和' auth_user'。那么其他呢?(auth_group_permissions,auth_user_groups,auth_user_user_permissions)我想了解这些表是如何由Django创建的(在auth文件夹中的models.py)。想在models.py中查看哪些内容?
如果我能理解的话,我希望我能理解如何创建其他表(django_admin_log,django_content_type,django_migrations,django_session)。如果您还能解释Django如何创建名为' django_migrations'的表格,我将不胜感激。和' django_session'太
提前谢谢你。祝你今天愉快。 enter image tables showing in pgAdmin3
答案 0 :(得分:3)
这很容易解释。
auth_user_groups
auth_group_permissions
auth_user_user_permissions
是关系表吗?其中用于存储有关模型表如何相关的信息。
例如auth_user_groups
存储用户和群组的关联方式。
如果你这样做
SELECT * FROM auth_user_groups;
|id|user_id|group_id|
....
在这里,我们可以看到哪些组与哪些用户相关。
所以基本上django会在你的模特上使用ManyToManyField
时自动创建这样的表格
回答评论
第一次调用./manage.py migrate
时会自动创建Django迁移表。此表存储应用迁移的历史记录。迁移模型可以在django/db/migrations/recorder.py
中找到。运行新迁移时将使用此模型,以查看应用哪些迁移以及应在此命令运行中应用哪些迁移。这个模型是django核心功能的一部分,这就是为什么你不需要在INSTALLED_APPS
中添加它,因为INSTALLED_APPS
只包含可插拔的应用程序。如果需要,可以在项目中包含/排除。