1. 新建项目和应用
django-admin.py startproject learn_models # 新建一个项目
cd learn_models # 进入到该项目的文件夹
django-admin.py startapp student# 新建一个 people 应用(app)
补充:新建app也可以用 python manage.py startapp people, 需要指出的是,django-admin.py 是安装Django后多出的一个命令,并不是运行的当前目录下的django-admin.py(当前目录下也没有),但创建项目会生成一个 manage.py 文件。
那project和app什么关系呢?
一个项目一般包含多个应用,一个应用也可以用在多个项目中。
2. 添加应用
将我们新建的应用(student)添加到 settings.py 中的 INSTALLED_APPS中,也就是告诉Django有这么一个应用。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'student',
]
3. 修改models.py
我们打开 student/models.py 文件,修改其中的代码如下:
from django.db import models
# Create your models here.
class Student(models.Model):
name = models.CharField(max_length=50,unique=True,null=False)
age = models.IntegerField(default=0)
我们新建了一个Student类,继承自models.Model, 一个人有姓名和年龄。
这里用到了两种Field,更多Field类型可以参考教程最后的链接。
4. 创建数据表
python manage.py makemigrations student # 让 Django 知道我们在我们的模型有一些变更
他会在student/migrations包下生成一个0001_initial.py 如图:
Migrations for 'student':
student\migrations\0001_initial.py
- Create model Student
Following files were affected
G:\Workspaces\python_wrok\MySchool\student\migrations\0001_initial.py
接着输入:
python manage.py sqlmigrate student 0001
结果如下:
BEGIN;
--
-- Create model Student
--
CREATE TABLE "student_student" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(50) NOT NULL UNIQUE, "age" integer NOT NULL);
COMMIT;
Following files were affected
转存一下数据库:
python manage.py migrate student 0001
结果如下:
Operations to perform:
Target specific migration: 0001_initial, from student
Running migrations:
Applying student.0001_initial... OK
Following files were affected
G:\Workspaces\python_wrok\MySchool\db.sqlite3
Process finished with exit code 0
这样我们的数据库表就建好了