Django的Models是什么?
一个model对应数据库中的一张数据表;
Django中Models以类的形式表现;
包含了一些基本字段以及数据的一些行为。
ORM
对象关系映射(Object Relation Mapping)
实现了对象和数据库之间的映射。
隐藏了数据访问的细节,不需要编写SQL语句。
编写Models
步骤:
1)在应用根目录创建models.py
,并引入models
模块创建类(from django.db import models
),集继承models.Model,该类即是一张数据表。
在类中需要创建一些字段。
字段就是类里面的属性(变量),写法:
attr=models.CharField(max_length=64)
eg:
class Article(models.Model):
title = models.CharField(max_length=64, default="Title")
content = models.TextField(null=True)
2)将python中的models.py
中的类生成数据表:
方法一:
我们在manage.py
同级目录使用命令:
python manage.py syncdb
这个方法貌似后来取消掉了,看看是否有替换的方式。
方法二:
进入manage.py
同级目录,执行:
python manage.py makemigrations app名(可选) # 制作数据迁移
python manage.py migrate # 实际迁移动作,执行之后,Django会自动在app名称/migrations/目录下生成移植文件
打开移植文件:
import ...
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Article',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(default='Title', max_length=64)),
('content', models.TextField(null=True)),
],
),
migrations.CreateModel(
name='Test',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=20)),
],
),
]
默认sqlite3的数据库在项目根目录下db.sqlite3
.