Django模型小记
最近开始看python,稍微看了点基础语法就开始看Django撸个简单的留言板。
跟着2.1中文文档来走,首先会在model这里比较花时间,因为跟php部分框架的model不太一样;
文档开始虽然没细讲,但还是会不自主去深入了解下模型关系等高级方法。
首先贴出几个在了解Django model时比较有用的文档页
model fields源码 、 model fields使用
模型定义与表创建
表的话目前打算就创建两个 一个是users,另一个是comments
字段都是简单的用户信息和聊天信息
代码如下
首先看users和comment类,一般的是先import下models
然后在类里定义字段,格式一般都是 xx = models.xxxField('comment' , **kw)
但也有是直接用自定义的类,原因是Django不像PHP框架过度倾向Mysql,
所以某些Mysql的字段的类型可能不支持,需要自己去实现,比如tinyint和unsigned
定义好后就执行两条命令 yourAppName对应你的app名,我的叫blog
python manage.py makemigrations yourAppName
#输出
Migrations for 'blog':
blog\migrations\0001_initial.py
- Create model comment
- Create model users
和
python manage.py migrate yourAppName
#输出
Operations to perform:
Apply all migrations: blog
Running migrations:
Applying blog.0001_initial... OK
检查下数据库表是否成功建立即可,表明前缀是app名_
表的字段更改
这个时候,我打算把 comment表名改成comments
首先把models.py的class comment改成class comments
然后重新执行下makemigrations 和 migrate
python manage.py makemigrations blog
#输出
Did you rename the blog.comment model to comments? [y/N] y
Migrations for 'blog':
blog\migrations\0003_auto_20190423_1415.py
- Rename model comment to comments
python manage.py migrate blog
#输出
Operations to perform:
Apply all migrations: blog
Running migrations:
Applying blog.0003_auto_20190423_1415... OK
改字段名、数据类型也是一样
回滚
现在我又后悔了 想要把comments改回叫comment
不需要makemigrations 和 migrate这么麻烦
像PHP的Laravel框架迁移类一样,每次更改都会生成一个迁移文件记录每一步操作
在你app目录的migrations文件夹里,点进去就能看到具体进行了哪些操作
假如0003_auto_20190423_1415.py是刚才从comment=>comments的迁移文件
那我们的是需要返回到0002的状态,使用以下指令
python manage.py migrate blog 0002
#输出
Operations to perform:
Target specific migration: 0002_auto_20190423_1403, from blog
Running migrations:
Rendering model states... DONE
Unapplying blog.0003_auto_20190423_1415... OK