前边只是简单的执行了下migrate把自带的几个表创建了一下。这个实例是如何创建自己的表。
1.创建模型
模型就是MTV中的M(Mondel).模型跟数据库中的表对应。
在脚本polls/models.py中定义数据库表的名称和表的字段,分别与类名和属性对应。
from django.db import models
# Create your models here.
class Question(models.Model):
question_text=models.CharField(max_length=200)
pub_date=models.DateTimeField('date published')
class Choice(models.Model):
question=models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text=models.CharField(max_length=200)
votes=models.IntegerField(default=0)
2.激活模型
在项目的settings.py文件中加入polls应用程序,书里说要加polls.apps.PollsConfig,直接加polls也可以。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls',
]
3.生成migrate脚本
python manage.py makemigrations
此命令会生成一个升级脚本(我觉得它就是给数据库升级用的,所以叫升级脚本,而且脚本有编号,非常符合这个名字)
polls\migrations\0001_initial.py
C:\Users\Administrator\django3\mysite>python manage.py makemigrations
Migrations for 'polls':
polls\migrations\0001_initial.py
- Create model Question
- Create model Choice
可以看到每个表会自动创建一个id字段
4.升级数据库
python manage.py migrate
执行此命令会自动执行第三步的升级脚本
C:\Users\Administrator\django3\mysite>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
Applying polls.0001_initial... OK
5.查看结果
SQLiteSpy查看,创建了两张表,命名是按照应用程序_模型,外键为模型外键名_id