浅谈Django学习migrate和makemigrations的差别
本文主要研究的是Django中migrate和makemigrations的差别,具体如下。
在你改动了model.py的内容之后执行下面的命令:
Pythonmanger.pymakemigrations
相当于在该app下建立migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py,但是这个改动还没有作用到数据库文件
你可以手动打开这个文件,看看里面是什么
在此之后执行命令
pythonmanager.pymigrate
将该改动作用到数据库文件,比如产生table之类
当makemigrations之后产生了0001_initial.py文件,你可以查看下该migrations会对应于什么样子的SQL命令
pythonmanger.pysqlmigratetheapp0001
大概是这个样子的:
BEGIN; CREATETABLE"polls_choice"( "id"serialNOTNULLPRIMARYKEY, "choice_text"varchar(200)NOTNULL, "votes"integerNOTNULL ); CREATETABLE"polls_question"( "id"serialNOTNULLPRIMARYKEY, "question_text"varchar(200)NOTNULL, "pub_date"timestampwithtimezoneNOTNULL ); ALTERTABLE"polls_choice"ADDCOLUMN"question_id"integerNOTNULL; ALTERTABLE"polls_choice"ALTERCOLUMN"question_id"DROPDEFAULT; CREATEINDEX"polls_choice_7aa0f6ee"ON"polls_choice"("question_id"); ALTERTABLE"polls_choice" ADDCONSTRAINT"polls_choice_question_id_246c99a640fbbd72_fk_polls_question_id" FOREIGNKEY("question_id") REFERENCES"polls_question"("id") DEFERRABLEINITIALLYDEFERRED; COMMIT;
总结
以上就是本文关于浅谈Django学习migrate和makemigrations的差别的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!