Python 使用django.contrib.auth.models导入用户时,是否需要在my models.py中创建单独的类?

Python 使用django.contrib.auth.models导入用户时,是否需要在my models.py中创建单独的类?,python,django,Python,Django,import语句导入所需的部件。但是,当你将用户类放入已安装的应用程序时,是否已经创建了用户类?或者您是否仍需要在models.py中进行澄清,以便在db中创建表格?或者有人可以详细介绍如何使用django用户和会话吗?我现在正在查看django文档,它们都只讨论过如何使用这个东西一次。他们从不将代码放在一种语法中,即用户将通过浏览器使用代码,而不是通过python shell使用代码。所有已安装的应用程序都可以对数据库模式做出贡献。django.contrib.auth.models提供了dj

import语句导入所需的部件。但是,当你将用户类放入已安装的应用程序时,是否已经创建了用户类?或者您是否仍需要在models.py中进行澄清,以便在db中创建表格?或者有人可以详细介绍如何使用django用户和会话吗?我现在正在查看django文档,它们都只讨论过如何使用这个东西一次。他们从不将代码放在一种语法中,即用户将通过浏览器使用代码,而不是通过python shell使用代码。

所有已安装的应用程序都可以对数据库模式做出贡献。django.contrib.auth.models提供了django.contrib.auth.models.user模型后面的auth_user表,因此您不必担心重新创建它,除非您有特定的理由这样做。

这里有很多事情要做。正如您所知,Django附带了许多可在您的应用程序中使用的contrib软件包。您可以通过将它们放入已安装的应用程序中来激活它们

当您运行python manage.py syncdb时,Django将解析已安装的应用程序中每个应用程序的models.py文件,并在数据库中创建关联表。因此,将django.contrib.auth添加到已安装的_应用程序并运行syncdb后,用户和组的表就在那里,可以使用了

现在,如果您想在其他应用程序中使用这些模型,您可以像您提到的那样,使用类似于from django.contrib.auth.models import User的东西导入它们。然后,您可以在一个模型上为用户模型创建一个ForeignKey、OneToOneField或ManyToManyField。执行此操作时,除ManyToManyField外,不会创建任何表;再多说一点。同一个表始终用于用户,就像用于您自己的任何模型一样,您可以在这些模型之间创建关系

许多域稍有不同,它们创建了一个中间表,通常称为连接表,将关系的两侧链接在一起。然而,这纯粹是为了一个特定关系的目的——实际用户表没有任何不同或以任何方式更改


关键是为用户创建了一个表,该表用于存储所有用户,而不管这些用户是在什么上下文中创建的。您可以将用户导入任何和所有应用程序,创建任意数量和种类的关系,而对于用户而言,没有任何变化。

如果表名或其他内容不符合您的需要,您可以随时扩展用户模型

from django.contrib.auth.models import User

class Employee(User):
    ...
models.py中任何扩展模型类的类都会对数据库架构作出贡献。这意味着,django搜索您的和django core model.py文件,并查找任何扩展模型的类,如:

这也适用于django核心代码文件。由于所有数据库表都是使用应用程序标签和模型名命名的,所以由django创建的数据库表也具有

比如说,

from django.contrib.auth.models import User
如果跟踪文件层次结构django->contrib->auth并打开models.py文件,您将看到相关的模型。这里还有其他模型类,如权限和组模型

由于这些模型都在auth应用程序下,所以数据库表是auth_user、auth_persion和auth_group

当您第一次运行manage.py syncdb命令时,django将创建这些表

from django.contrib.auth.models import User