2024-04-26 06:06:06 发布
网友
I get that models is a class with methods such as CharField(), which is being inherited into these classes in order to create table columns...right?
我相信你在阿尔伯克基走错了弯。小写models不是一个类,CharField()也不是一个方法,尽管它最终确实调用了一个名为__init__()的特定方法,但我们稍后会讨论这个问题。在
models
CharField()
__init__()
首先,看看import语句:
from django.db import models
小写models这里是一个包,意味着它是一个包含__init__.py文件的目录。具体地说,它是包db的一个子包,它本身就是django包的子包。Python虚线路径与包目录结构平行。在
__init__.py
db
django
这里值得注意的是,models不是一个模块,尽管它可能是。如果在db包中有一个名为models.py的Python文件,那么models将是一个模块。我们怎么知道呢?通过仔细阅读Django源代码,我们发现它是一个目录,因此是一个包。See the source code here。在
models.py
因此,包是包含其他目录(子包)或python文件(模块)的目录。类定义在模块中定义。那么,如果Model类是一个包而不是一个模块,它是如何从models导入的呢?在
Model
这是可能的,因为models包中的__init__.py文件导入了Model类。Model类定义实际上位于base模块中,是的,models包中的base.py文件。在
base
base.py
现在,对于CharField()。在Python中,类实例化使用函数表示法。定义自定义Model类时,数据库字段是从模型的类属性创建的。在Book模型中,title是一个类属性,从CharField类实例化。当它被实例化时,调用CharField方法__init__()。在
Book
title
CharField
这里是一个很好的地方来指出为什么有方便的包装使进口更方便。CharField类在models包的fields子包中定义,Django的许多其他字段类也在那里定义。与models包中的__init__.py从base子模块导入Model类类似,它还从fields子模块导入所有字段。在
fields
由于models包负责我们可能需要使用的所有子导入,所以我们可以直接导入该包。使用from样式的导入,我们可以很容易地识别代码中使用该包中的某些内容的所有位置,因为它总是有点符号models.Something。我们不必担心这些东西是如何组织在包裹里的。在
from
models.Something
有关详细信息,see the Python documentation on packages。在
我相信你在阿尔伯克基走错了弯。小写
models
不是一个类,CharField()
也不是一个方法,尽管它最终确实调用了一个名为__init__()
的特定方法,但我们稍后会讨论这个问题。在首先,看看import语句:
小写
models
这里是一个包,意味着它是一个包含__init__.py
文件的目录。具体地说,它是包db
的一个子包,它本身就是django
包的子包。Python虚线路径与包目录结构平行。在这里值得注意的是,
models
不是一个模块,尽管它可能是。如果在db
包中有一个名为models.py
的Python文件,那么models
将是一个模块。我们怎么知道呢?通过仔细阅读Django源代码,我们发现它是一个目录,因此是一个包。See the source code here。在因此,包是包含其他目录(子包)或python文件(模块)的目录。类定义在模块中定义。那么,如果
Model
类是一个包而不是一个模块,它是如何从models
导入的呢?在这是可能的,因为
models
包中的__init__.py
文件导入了Model
类。Model
类定义实际上位于base
模块中,是的,models
包中的base.py
文件。在现在,对于
CharField()
。在Python中,类实例化使用函数表示法。定义自定义Model
类时,数据库字段是从模型的类属性创建的。在Book
模型中,title
是一个类属性,从CharField
类实例化。当它被实例化时,调用CharField
方法__init__()
。在这里是一个很好的地方来指出为什么有方便的包装使进口更方便。
CharField
类在models
包的fields
子包中定义,Django的许多其他字段类也在那里定义。与models
包中的__init__.py
从base
子模块导入Model
类类似,它还从fields
子模块导入所有字段。在由于
models
包负责我们可能需要使用的所有子导入,所以我们可以直接导入该包。使用from
样式的导入,我们可以很容易地识别代码中使用该包中的某些内容的所有位置,因为它总是有点符号models.Something
。我们不必担心这些东西是如何组织在包裹里的。在有关详细信息,see the Python documentation on packages。在
相关问题 更多 >
编程相关推荐