真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

django中用makemigrations時(shí)提示Nochangesdetected

本篇內(nèi)容主要講解“django中用makemigrations時(shí)提示No changes detected”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“django中用makemigrations時(shí)提示No changes detected”吧!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、涿鹿網(wǎng)站維護(hù)、網(wǎng)站推廣。

我們?cè)谑褂肈jango創(chuàng)建工程的時(shí)候都使用makemigrations、migrate來生成最初的數(shù)據(jù)庫模型,但是到最后都是直接在數(shù)據(jù)庫中手動(dòng)創(chuàng)建表,為什么呢?因?yàn)檫@些數(shù)據(jù)庫遷移命令經(jīng)常會(huì)顯示No changes detected,明明我們已經(jīng)改了數(shù)據(jù)庫模型了,為什么提示沒有變化呢?這里我們就要搞清楚,數(shù)據(jù)庫遷移命令是怎么去識(shí)別模型變化的。詳細(xì)的源碼分析我這里就不做介紹了,說一下它的流程幫助你理解就可以了。

首先我們要知道,與數(shù)據(jù)庫遷移相關(guān)的東西都有哪些?

  • models.py中定義的模型

  • APP下面的migrations目錄

  • 數(shù)據(jù)庫中的django_migrations表

makemigrations

執(zhí)行makemigrations命令的時(shí)候,執(zhí)行流程如下:

  1. 根據(jù)注冊(cè)的APP,獲取所有APP下的migrations目錄,遍歷其下的py文件(不以_~開頭的)

  2. 然后根據(jù)文件中的內(nèi)容生成對(duì)應(yīng)的數(shù)據(jù)庫表模型

class Migration(migrations.Migration):

   initial = True

   dependencies = [
   ]

   operations = [
       migrations.CreateModel(
           name='Course',
           fields=[
               ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
               ('title', models.CharField(max_length=64)),
           ],
       ),
   ]
  1. 再根據(jù)models.py文件中的類生成數(shù)據(jù)庫表模型

  2. 對(duì)比2、3中生成的模型字段,如果有變化就在對(duì)應(yīng)APP的migrations目錄下生成新的.py文件

migrate

執(zhí)行migrate命令的時(shí)候,執(zhí)行流程如下:

  1. 根據(jù)注冊(cè)的APP,獲取所有APP下的migrations目錄,遍歷其下的py文件(不以_~開頭的)

  2. 根據(jù)migrations目錄下的所有遷移文件生成數(shù)據(jù)庫表模型

  3. 讀取django_migrations表中的所有記錄,其中記錄的是所有表生成的遷移文件信息

idappnameapplied
1contenttypes0001_initial2019-09-08 09:48:47.040754
2Course0001_initial2019-09-08 09:52:23.045994
  1. 檢測(cè)表中所記錄的數(shù)據(jù)模型加載的遷移文件與實(shí)際migrations目錄下的文件是否相匹配,如果全都加載過,則不執(zhí)行;如果有未加載的,就執(zhí)行數(shù)據(jù)庫命令

結(jié)論

通過以上分析得出以下結(jié)論:

  • app下必須有migrations文件夾,即使是空的(必須有、必須有、必須有)

  • 執(zhí)行遷移時(shí)應(yīng)該先執(zhí)行makemigrations,再執(zhí)行migrate(這是一條建議)

  • 如果執(zhí)行命令顯示沒有變化,請(qǐng)對(duì)比django_migrations表和migrations目錄下的文件名,是否對(duì)應(yīng)的文件以及執(zhí)行過遷移

  • 如果想重新執(zhí)行遷移,例如migrations下有0002_initial.py文件,django_migrations中也包含對(duì)應(yīng)記錄,則刪除django_migrations表中對(duì)應(yīng)記錄,重新執(zhí)行migrate命令即可

到此,相信大家對(duì)“django中用makemigrations時(shí)提示No changes detected”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


本文題目:django中用makemigrations時(shí)提示Nochangesdetected
網(wǎng)站地址:http://weahome.cn/article/pedcij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部