模型类:配置、定义、生成数据移植文件、修改模型、移植到数据库

一、配置项目 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命令使

改动生效。

 

posted @ 2018-06-07 15:07  巴蜀秀才  阅读(711)  评论(0编辑  收藏  举报