本文已参与「新人创作礼」活动,一起开启掘金创作之路
创建应用程序
在前面打开的终端窗口中应该还运行着runserver 。请再打开一个终端窗口(或标签页),并切换到manage.py所在的目录。激活该虚拟环境,再执行命令startapp :
命令startapp appname 让Django建立创建应用程序所需的基础设施。
这里我们建立了一个test1_logs
定义模型
在test1_logs下打开文件models.py,创建自己的模型
我们创建了一个名为Pizza的类,它继承了Model ——Django中一个定义了模型基本功能的类。Pizza类只有两个属性:name和date_added 。
属性name是一个CharField——由字符或文本组成的数据。需要存储少量的文本,如名称、标题或城市时,可使用CharField 。定义CharField 属性时,必须告诉Django 该在数据库中预留多少空间。在这里,我们将max_length设置成了200(即200个字符),这对存储大多数主题名来说足够了。
属性date_added是一个DateTimeField——记录日期和时间的数据。我们传递了实参auto_add_now=True ,每当用户创建新主题时,这都让Django将这个属性
自动设置成当前日期和时间。
激活模型
要使用模型,必须让Django将应用程序包含到项目中。为此,打开settings.py(它位于目录test1_log中),你将看到一个这样的片段,即告诉Django哪些应用程序安装
在项目中:
定位到INSTALLED_APPS,在下面添加
接下来,需要让Django修改数据库,使其能够存储与模型Pizza 相关的信息。
下面来应用这种迁移,让Django替我们修改数据库:
向管理网站注册模型
Django自动在管理网站中添加了一些模型,如User 和Group ,但对于我们创建的模型,必须手工进行注册。
我们创建应用程序test1_logs 时,Django在models.py所在的目录中创建了一个名为admin.py的文件:
如果没有admin.py文件:执行
python manage.py startapp test1_logs命令,在test1_logs文件下会出现
为向管理网站注册Pizza模块 ,请输入下面的代码:
添加模块
添加一个Entry模块,在models.py中添加代码:
像Pizza一样,Entry 也继承了Django基类Model 。第一个属性Pizzq是一个ForeignKey 实例。外键是一个数据库术语,它引用了数据库中的另一条记录;这些代码将每个条目关联到特定的主题。每个主题创建时,都给它分配了一个键(或ID)。需要在两项数据之间建立联系时,Django使用与每项信息相关联的键。稍后我们将根据这些联系获取与特定主题相关联的所有条目。
接下来是属性text ,它是一个TextField 实例。这种字段不需要长度限制,因为我们不想限制条目的长度。属性date_added 让我们能够按创建顺序呈现条目,并在每个条目旁边放置时间戳。
我们在Entry 类中嵌套了Meta 类。Meta 存储用于管理模型的额外信息,在这里,它让我们能够设置一个特殊属性,让Django在需要时使用Entries 来表示多个条目。如果没有这个类, Django将使用Entrys来表示多个条目。最后,方法__str__() 告诉Django,呈现条目时应显示哪些信息。由于条目包含的文本可能很长,我们让Django只
显示text 的前50个字符。我们还添加了一个省略号,指出显示的并非整个条目。
迁移模型Entry
由于我们添加了一个新模型,因此需要再次迁移数据库。
每当修改models.py后,执行命令python manage.py makemigrations app_name ,
再执行命令python manage.py migrate 。
向管理网站注册Entry
我们还需要注册模型Entry 。为此,需要将admin.py修改成类似于下面这样: