模型类:配置、定义、生成数据移植文件、修改模型、移植到数据库
一、配置项目 INSTALLED_APPS
需要在django项目中的settings.py中告诉Django需要安装应用中的模型。方法是打开djangosite/settings.py文件
对 INSTALLED_APPS 增加两行(因为这里有两个应用 app、startapp)
1 INSTALLED_APPS = [ 2 'app.apps.App1Config', # 为app应用声明自动生成的App1Config 3 'startapp.apps.StartappConfig', # 为startapp应用声明自动生成的StartappConfig 4 'django.contrib.admin', 5 'django.contrib.auth', 6 'django.contrib.contenttypes', 7 'django.contrib.sessions', 8 'django.contrib.messages', 9 'django.contrib.staticfiles', 10 ]
注释的两行是我添加的两行。
二、模型定义
进入dijangosite/app/models.py,在其中新建一个模型Moment来定义信息发布表:
1 from django.db import models 2 3 4 # Create your models here. 5 class Moment(models.Model): 6 content = models.CharField(max_length=200) 7 user_name = models.CharField(max_length=20) 8 kind = models.CharField(max_length=20)
所有的django模型必须继承于这里的 models。
三、生成数据移植文件
命令:python manage.py makemigrations 应用名
生成数据移植文件是指将models.py里定义的数据表转换成数据库生成脚本的过程。该过程要通过命令行和manage.py实现
这里果断报错了,怎么办?没事,根据提示,我们进apps.py文件去看看name是不是没有,结果发现类下面是有name属性的。那是说明问题呢?
这里很快就发现问题了,我们应用的名叫app,生成的类名就是AppConfig,巧的是继承的类也叫AppConfig。所以把我们应用的类名改成App1Config.
这里还有注意到,应用startapp的类名为StartappConfig。我们去第一步配置里改一下,改过之后就是文章第一步的样子。
再次运行,结果如下:
完成了模型Moment的建立。生成的0001_initial.py文件是数据库生成的中间文件。该文件以及以后所有的migration(迁移)文件都存在该目录下。
再次执行命令:python manage.py makemigrations 应用名 我们可以对比models.py与已有数据库之间的差别,没有差别就不会做任何操作
如果模型进行了修改,则再次执行的时候会将修改同步到数据库中。比如我们修改content字段的长度:
四、移植到数据库
模型修改过程中可以随时调用makemigrations 生成中间移植文件。而需要使当前移植文件生效、修改真实的数据库schema时,则要通过manage.py
中的migrate命令使修改同步到数据库。
命令:python manage.py migrate
总结:
每次修改models.py的内容后运行makemigratons命令,检测改动是否符合数据库的语法规则;在调试运行之前,运行一次migrate命令使
改动生效。