Django之第一个app<5>
2015-08-28 09:57
369 查看
激活模型
上一篇短小的模型代码告诉Django许多信息。有了它,Django能够做:
为这个应用创建一个数据库模式(
创建一个python类型的获取
但是,首先我们需要告诉工程,polls这个应用被安装了。
注意:Django应用时可插入的,你可以在多个工程中使用一个应用,你可以传播应用,因为它们不必与一个Django安装器绑定。
再次编辑
现在,Django知道了要包含polls这个app。让我们来运行另一个命令。
你会看到类似与下面的信息:
通过运行
Migrations是Django实现存储模型变化的原理,它们只是磁盘上的文件。如果你想要阅读migration的话,请打开
你可以看到类似与下面的信息:
注意:
输出的信息取决于你使用的数据库,官方的例子是使用PostgreSQL,我是使用SQLite。
所创建数据表的名称是自动产生的,是应用的名称(这里是polls)加上模型名字的小写(比如,question和choice)
主键(Primary Keys)会被自动创建
按照约定,Django会在外键名后面加上
如果你感兴趣的话,你也可以运行
现在,运行
记住:
Migrations非常强大,允许你在开发工程的过程中随时改变你的模型,而不用删除已经存在的数据库或者数据表和重新创建新的。Migrations擅长更新你的数据库,而不会失去数据。记住模型改变的三个步骤:
在
运行
运行
创建和应用migrations的命令分开的原因是你会将migrations提交到你的帮本控制系统。
上一篇短小的模型代码告诉Django许多信息。有了它,Django能够做:
为这个应用创建一个数据库模式(
CREATE TABLE statements)
创建一个python类型的获取
Question和
Choice模型对象的API
但是,首先我们需要告诉工程,polls这个应用被安装了。
注意:Django应用时可插入的,你可以在多个工程中使用一个应用,你可以传播应用,因为它们不必与一个Django安装器绑定。
再次编辑
mysite/setting.py这个文件,改变一个
INSTALLEND_APPS这个设置,要包含字符串
polls
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'polls', )
现在,Django知道了要包含polls这个app。让我们来运行另一个命令。
$ python manage.py makemigrations polls
你会看到类似与下面的信息:
Migrations for 'polls': 0001_initial.py: - Create model Choice - Create model Question - Add field question to choice
通过运行
makemigrations这个命令,你告诉Django你已经对你的模型做出了一些改动,并且你想要这些改动被存储。
Migrations是Django实现存储模型变化的原理,它们只是磁盘上的文件。如果你想要阅读migration的话,请打开
polls/migration/0001_initial.py。当然这个文件是可以手动编辑的。
migrate这个命令会运行migrations和自动管理你的数据库模式。首先我们来看一下migration会运行什么样的SQL语句。
sqlmigrate命令返回执行了什么样的SQL语句
$ python manage.py sqlmigrate polls 0001
你可以看到类似与下面的信息:
BEGIN; CREATE TABLE "polls_choice" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL); CREATE TABLE "polls_question" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "question_text" varchar(200) NOT NULL, "pub_date" datetime NOT NULL); CREATE TABLE "polls_choice__new" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL, "question_id" integer NOT NULL REFERENCES "polls_question" ("id")); INSERT INTO "polls_choice__new" ("choice_text", "votes", "id", "question_id") SELECT "choice_text", "votes", "id", NULL FROM "polls_choice"; DROP TABLE "polls_choice"; ALTER TABLE "polls_choice__new" RENAME TO "polls_choice"; CREATE INDEX "polls_choice_7aa0f6ee" ON "polls_choice" ("question_id"); COMMIT;
注意:
输出的信息取决于你使用的数据库,官方的例子是使用PostgreSQL,我是使用SQLite。
所创建数据表的名称是自动产生的,是应用的名称(这里是polls)加上模型名字的小写(比如,question和choice)
主键(Primary Keys)会被自动创建
按照约定,Django会在外键名后面加上
_id
如果你感兴趣的话,你也可以运行
python manage.py check这个命令。这只会检查你的工程是否有问题,而不会做migrations和创建数据库。
现在,运行
migrate这个命令来在你的数据库中创建这些模型数据表
charies:mysite weichuang$ python manage.py migrate Operations to perform: Synchronize unmigrated apps: staticfiles, messages Apply all migrations: admin, contenttypes, polls, auth, sessions Synchronizing apps without migrations: Creating tables... Running deferred SQL... Installing custom SQL... Running migrations: Rendering model states... DONE Applying polls.0001_initial... OK
记住:
migrate这个命令会执行所有还没有应用的migrations(Django会使用一个在数据库中特殊的数据表来跟踪哪些被应用,这个数据表叫做
django_migrations)。
Migrations非常强大,允许你在开发工程的过程中随时改变你的模型,而不用删除已经存在的数据库或者数据表和重新创建新的。Migrations擅长更新你的数据库,而不会失去数据。记住模型改变的三个步骤:
在
models.py改变你的模型
运行
python manage.py migrate来创建这些变化的migrations
运行
python manage.py migrate来应用数据库的变化
创建和应用migrations的命令分开的原因是你会将migrations提交到你的帮本控制系统。
相关文章推荐
- iOS AutoLayout自动布局中级开发教程(5)-修改约束的值,延迟加载
- iOS开发之多线程
- Android Studio导入项目的几种方法
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- Android ADB命令大全
- android.view.WindowLeaked: Activity com.xty.activity.ActivityMainPage has leaked window com.android.
- Android 项目开发
- 炒股App:又一个大数据丢在风口上的蛋
- android有时候利用view进行多个传值
- 为什么要加 android.intent.category.DEFAULT
- Android socket 编程实例
- iOS Runtime[转载]
- Eclipse调试时总是出现Application XXX is waiting for the debugger to attach的提示,
- ios中如何使用xib自定义属性
- TabWidget/FragmentTabHost去掉分割线:
- 判断终端是ios还是安卓的一些妙用
- anddroid程序创建桌面快捷键
- Android Studio快捷键
- android手机安装*.cer文件、证书
- IOS:必须了解的bug技巧,Crash查看