import语句导入所需的部分。但是当你将它放入已安装的应用程序时,是否已经制作了“用户”类?或者你是否还需要在models.py中澄清以便在db中创建表?或者有人可以扩展如何使用django用户和会话?我现在正在查看django文档,他们都只是讨论了如何使用这个东西一次。他们从不将代码放在一个语法中,用户将通过浏览器使用代码,而不是通过python shell。
答案 0 :(得分:0)
所有已安装的应用都可以为数据库架构做出贡献。 django.contrib.auth.models
贡献了auth_user
模型背后的django.contrib.auth.models.User
表,因此除非您有特定的理由,否则您不必担心重新创建它。
答案 1 :(得分:0)
这里有很多事情要发生。如您所知,Django附带了许多可以在您的应用中使用的“contrib”软件包。您可以通过将它们放入INSTALLED_APPS
。
运行python manage.py syncdb
时,Django会解析INSTALLED_APPS
中每个应用程序的models.py文件,并在数据库中创建关联的表。因此,一旦您将django.contrib.auth
添加到INSTALLED_APPS
并运行syncdb
,User
和Group
的表就会存在并准备好使用。
现在,如果您想在其他应用中使用这些模型,您可以像from django.contrib.auth.models import User
那样导入它们。然后,您可以在其中一个模型上为ForeignKey
模型创建OneToOneField
,ManyToManyField
或User
。执行此操作时,不会创建任何表(ManyToManyField
除外;稍微多一点)。同一个表总是用于User
,就像您可能在其中建立关系的任何自有模型一样。
ManyToManyField
略有不同,因为创建了一个中间表(通常称为“连接表”),它将关系的两端链接在一起。但是,这纯粹是出于某一特定关系的目的 - 实际User
表的任何内容都不同或以任何方式改变。
重点是为User
创建了一个表,无论创建它们的上下文如何,这个表都用于存储所有User
。您可以将User
导入您可以根据需要创建任意数量的所有应用,并根据User
进行任何真正的更改。
答案 2 :(得分:0)
如果表名或其他内容不符合您的需求,您可以随时扩展用户模型。
from django.contrib.auth.models import User
class Employee(User):
...
答案 3 :(得分:0)
Model
中扩展models.py
类的任何类都有助于数据库架构。这意味着,django会搜索您的(以及django核心)model.py
文件并查找任何扩展Model
的类,如:
some models.py
class SomeModel(Model):
...
...
class Otherthing(Model):
...
这也适用于django核心代码文件。由于使用应用程序标签和模型名称命名的所有数据库表,由django创建的数据库ables也具有...
例如,
from django.contrib.auth.models import User
如果您跟踪文件层次结构django -> contrib -> auth
并打开models.py
文件,您将看到相关模型。此处还有其他模型类,如Permission
和Group
模型。
由于这些模型位于auth
应用程序下,因此数据库表为auth_user
,auth_perission
和auth_group
第一次运行manage.py syncdb
命令时,django会创建这些表...