在你改动了 model.py的内容之后执行下面的命令:

python manger.py makemigrations

相当于在该app下建立 migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py, 但是这个改动还没有作用到数据库文件

你可以手动打开这个文件,看看里面是什么。当makemigrations之后产生了0001_initial.py 文件,你可以查看下该migrations会对应于什么样子的SQL命令,使用如下命令,

python manger.py sqlmigrate theapp 0001

看到的大概是这样子的:

  1.  
    BEGIN;
  2.  
    CREATE TABLE "polls_choice" (
  3.  
    "id" serial NOT NULL PRIMARY KEY,
  4.  
    "choice_text" varchar(200) NOT NULL,
  5.  
    "votes" integer NOT NULL
  6.  
    );
  7.  
    CREATE TABLE "polls_question" (
  8.  
    "id" serial NOT NULL PRIMARY KEY,
  9.  
    "question_text" varchar(200) NOT NULL,
  10.  
    "pub_date" timestamp with time zone NOT NULL
  11.  
    );
  12.  
    ALTER TABLE "polls_choice" ADD COLUMN "question_id" integer NOT NULL;
  13.  
    ALTER TABLE "polls_choice" ALTER COLUMN "question_id" DROP DEFAULT;
  14.  
    CREATE INDEX "polls_choice_7aa0f6ee" ON "polls_choice" ("question_id");
  15.  
    ALTER TABLE "polls_choice"
  16.  
    ADD CONSTRAINT "polls_choice_question_id_246c99a640fbbd72_fk_polls_question_id"
  17.  
    FOREIGN KEY ("question_id")
  18.  
    REFERENCES "polls_question" ("id")
  19.  
    DEFERRABLE INITIALLY DEFERRED;
  20.  
     
  21.  
    COMMIT;

在makemigrations之后执行命令:

python manager.py migrate

将该改动作用到数据库文件,比如产生table,修改字段的类型等。

理解Django的makemigrations和migrate的更多相关文章

  1. Django 中 makemigrations、migrate时 No changes detected

    Django创建的项目中,需要更改.增加.删除表中的某些属性,性急直接把之前数据库表删除了,之后再执行: python manage.py makemigrations python manage.p ...

  2. Django 执行 makemigrations 显示 No changes detected in app

    在Django项目配置一下多数据库,但是运行 makemigrations 执行不正常 $ python manage.py makemigrations polls No changes detec ...

  3. [diango]理解django视图工作原理

    前言:正确理解django视图view,模型model,模板的概念及其之间的关联关系,才能快速学习并上手使用django制作网页 本文主要讲解自己在学习django后对视图view的理解 在进入正文之 ...

  4. Django——20141014深入理解Django HttpRequest HttpResponse的类和实例

    深入理解Django HttpRequest HttpResponse的类和实例 了解META选项 了解中间件 理清所有模板传输模板变量的方式,并作出选择 Django模板系统:如何利用Django模 ...

  5. 理解django的框架为何能够火起来

    理解django的框架为何能够火起来 https://www.yiibai.com/django/django_basics.html https://code.ziqiangxuetang.com/ ...

  6. django orm 之makemigrations和migrate命令

    makemigrations:将模型的更改生成迁移脚本文件.模型所在的app,必须放在settings.py中的INSTALLED_APPS列表中.这个命令有以下几个常用选项: 1.app_label ...

  7. django中表变更后migrate无效的问题

    问题描述: 已有的model,修改之后,想重新建模,于是将migrations文件夹中除__init__.py之外其他文件都删掉,再次执行以下步骤python manage.py makemigrat ...

  8. Django(21)migrate报错的解决方案

    前言 在讲解如何解决migrate报错原因前,我们先要了解migrate做了什么事情,migrate:将新生成的迁移脚本.映射到数据库中.创建新的表或者修改表的结构. 问题1:migrate怎么判断哪 ...

  9. [Django高级]理解django中的中间件机制和执行顺序

    原文来自 Understanding Django Middlewares, 这篇文章从整体上介绍了django中中间件定义,作用,和怎么样自己写中间件 –orangleliu. 注:middlewa ...

随机推荐

  1. 天梯赛 L2-023. (模拟) 图着色问题

    题目链接 题目描述 图着色问题是一个著名的NP完全问题.给定无向图 G = (V, E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色? 但本题并不是要你解决这 ...

  2. python读写mysql

    读取mysql数据 # -*- coding: utf-8 -*- # 导入必要模块 import pandas as pd from sqlalchemy import create_engine ...

  3. Linux服务-配置Nginx反向代理

    任务目标:实现基于轮询的方式调度三台web,并验证结果:实现基于权重的方式调度三台web,并验证结果:实现基于hash的方式调用三台web,并验证结果 由于刚刚做了nfs设置,为了提现实验结果,我在w ...

  4. PHP autoload自动加载机制

    原文地址: http://www.jb51.net/article/31399.htm 一直不是很明白__autoload()和spl_autoload_register()到底有什么不同,找到了一个 ...

  5. 【数据库】SQL经典面试题 - 行列转换二 - 列转行

    本帖子是行转列的一个逆向操作——列转行,看下面一个面试题 面试题2: 柠檬班第30期学生要毕业了,他们的Linux.MySQL.Java成绩数据表 tb_lemon_grade_column中, 表中 ...

  6. Servlet笔记2--模拟Servlet本质、第一个Servlet程序、将响应结果输出到浏览器中

    以下代码均非IDE开发,所以都不规范,仅供参考 模拟Servlet本质: 模拟Servlet接口: /* SUN公司制定的JavaEE规范:Servlet规范 Servlet接口是Servlet规范中 ...

  7. Github授权新的设备ssh接入

    为Mac生成公钥 步骤: 检查本机是否已有公钥 ls -la ~/.ssh 将原来的公钥删除 rm -rf ~/.ssh 生成新的公钥(填自己的邮箱),然后除了密码,一路默认 ssh-keygen - ...

  8. WebApi参数问题方案

    原文:http://www.cnblogs.com/landeanfen/p/5337072.html

  9. 正则表达式之你不知道的replace

    我们都知道js内置类String提供了一个replace方法,可以把指定字符串替换为另一个字符串,他的基础用法如下: var str="hello world"; var str= ...

  10. (一)问候 Jsoup

    第一节: Jsoup 简介 Jsoup简介 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQu ...