django框架的models

在django的框架设计中采用了mtv模型,即Model,template,viewer

Model相对于传统的三层或者mvc框架来说就相当对数据处理层,它主要负责与数据的交互,在使用django框架设计应用系统时,需要注意的是django默认采用的是orm框架中的codefirst模型,也就是说开发人员只需要专注于代码的编写,而不需要过多的关注数据库层面的东西,把开发人员从数据库中解放出来

django会根据Model类生成一个数据库镜像文件,然后再使用该镜像文件生成数据库,同时该文件将记录与数据库同步版本的变化,所以在使用django进行开发时不要手工去修改数据库,这样会造成django框架的版本记录不正确,从而无法正确的同步数据模型与数据库的内容

django生成的镜像文件内容如下:

from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('web', '0001_initial'),
]

operations = [
migrations.AddField(
model_name='userinfo',
name='sex',
field=models.BooleanField(default=True),
preserve_default=False,
),
]
以上内容为生的一一个版本的镜像,内容记录了对model所在的app的记录,以及执行的动作,如上面的镜像文件记录为对web的app中的model增加了一个名称为sex的字段,字段类型为Boolean,默认为True

自动将app中的Model进行同步需要setting.py中设置INSTALLED_APPS,将需要同步的app注册到系统中,系统在运行同步命令的时候将会把所有注册到系统中的app中的Model数据与数据库进行同步处理
同时需要注意一个问题,即app一定要位于工程目录之下,否则同步的时候将会提示没有这个app之类信息
在进行同步之前要做几样检查工作:
一:数据库连接配置:setting.py

DATABASES = {
'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME': 'test',

'USER': 'root',

'PASSWORD': '434944800',

'HOST': 'localhost',

'PORT': '3306',

}
}

二:将app注册到工程项目中

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'web',
]
inseert 字段主要是为了将APP里面的model在数据中建立。
三:编写Model
from __future__ import unicode_literals
from django.db import models

# Create your models here.

class userInfo(models.Model):
username=models.CharField(max_length=100)
passwd=models.CharField(max_length=20)
sex=models.BooleanField()

类userinfo即相当于数据表名,django实际生成的表名为web_userinfo,由于对数据库的操作需要借助于django,所以model类需要继承自models.Model

在建立表的时候默认是加上了项目名一个前缀,比如你写的是user表,实际在在数据库中建立的是WEB_USER表,

准备工作完成后在终端进行工程所在目录中
输入命令:python manage.py  makemigrations
生成镜像文件
        python manage.py  migrate
        同步到数据库
执行以上两条命令将对Model和数据库进行同步

总结:
一:配置数据库
二:app注册到工程
三:编写model
四:执行命令同步

对model做调整后只需要重复执行第四步即可同步数据库




















原文地址:https://www.cnblogs.com/ncut/p/6243228.html