models的编写
- models中的每个class都称之为模型类(Model) 或 实体类(Entry)
- models中的每个实体类,必须继承自models.Model
1、通过ORM创建数据表
- 1、在models 文件中定义一个类,如下
from django.db import models
# Create your models here.
class Publisher(models.Model):
name = models.CharField(max_length=20)
address = models.CharField(max_length=50)
city = models.CharField(max_length=20)
country = models.CharField(max_length=20)
website = models.URLField()
- 2、在命令提示符中输入python manage.py makemigrations,此时在对应应用的migrations文件夹中出现一个0001_initial文件
# Generated by Django 2.1.8 on 2019-05-07 08:06
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Publisher',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=20)),
('address', models.CharField(max_length=50)),
('city', models.CharField(max_length=20)),
('country', models.CharField(max_length=20)),
('website', models.URLField()),
],
),
]
- 3、再在命令提示符中执行python manage.py migrate,此时数据库自动创建一个表 注意:Django中的 CharField 数据字段对应SQL中的 varchar 类型的数据
2、Django提供的数据字段以及字段选项
- 1、常用数据字段(Field Types)
- BooleanField() 布尔类型
- CharField() 字符串类型
- DateField() 日期类型
- DateTimeField() 日期时间类型
- FloatField() 浮点数类型
- FileField() 字符串类型-文件地址
- EmailField() 字符串类型
- IntegerField() 整数类型
- ImageField() 字符串类型- 图片地址
- URLField() 字符串类型-网址
- TextField() 字符串类型
- DecimalField() 浮点数类型
- 2、常用数据选项(Field Options)
- null :是否为空name = CharField(max_length=30, null=True),允许为空
- default:设置默认值name = CharField(max_length=30, default=“保密”)设置默认值为保密
class Author(models.Model):
name = models.CharField(max_length=20) # varchar(20)
age = models.IntegerField() # int
email = models.EmailField(null=True) # varchar(254)允许为空
class Book(models.Model):
title = models.CharField(max_length=30) # varchar(30)
publication_date = models.DateField(default=datetime.datetime.now()) # date
参考文档(字段类型与字段选项)
3、数据版本的切换
- python manage.py migrate 应用名称 版本号
- 例如:python manage.py migrate music 0002,重新执行0002的日志文件
4、数据的导出
- mysqldump -u root -p 数据库名 > 文件名.sqi(导出所有的表结构和数据)
- mysqldump -u root -p -d 数据库名 > 文件名.sql(导出表结构,不导数据)
5、数据的导入
- mysql -u root -p 数据名 < 文件名.sql (数据库名必须先存在)
6、通过数据库自动导出models文件
- python manage.py inspectdb > 文件名.py