代码之家  ›  专栏  ›  技术社区  ›  ViaTech

创建或更改PostgreSQL表以确保Django模型匹配

  •  0
  • ViaTech  · 技术社区  · 6 年前

    今天,在Django项目的开发过程中,我遇到了一个恼人的问题,当时我正试图在测试数据库和开发数据库之间切换,而我似乎无法找到解决迁移问题的可靠方法。

    测试数据库

    我正在访问 和往常一样,我通过Django settings.py进行了迁移,添加了 客户 您在下面的代码中看到的字段。

    德夫德布 在my Django的settings.py中运行 ,以及我的 客户 字段未添加到新数据库中。当我跑的时候 正如预期的那样,我得到“未检测到任何更改”。

    我没有看到比编写我自己的脚本更好的方法来处理这个问题,该脚本确保所有模型表都存在于我连接到的任何数据库中,并且所有模型字段都位于每个表中,否则会更改表并添加相应的列,这就引出了我的问题。。。

    python manage.py sqlmigrate objects 0001 (这是我的0001_initial.py文件),下面是创建代码:

    CREATE TABLE "objects_users" (
        "id" serial NOT NULL PRIMARY KEY, 
        "clientID" integer NOT NULL, 
        "email" varchar(100) NOT NULL, 
        "first_name" varchar(100) NOT NULL, 
        "last_name" varchar(100) NOT NULL, 
        "phone" varchar(100) NOT NULL, 
        "password" varchar(100) NOT NULL, 
        "type" varchar(100) NOT NULL, 
        "date_created" timestamp with time zone NOT NULL, 
        "active" varchar(100) NOT NULL);
    

    大钞

    空=真 模型字段

    到目前为止,我已经能够解决我的问题,清除连接到的任何数据库,然后运行 python manage.py迁移 基于初始迁移文件,但对于无法重置所有内容的生产实例,这不是有效的解决方案。

    我需要一些想法,我认为ALTERTABLE语句基于我从中获得的字符串 python manage.py sqlmigrate objects 0001 到目前为止是最好的,但我愿意接受任何可以解决我的问题的方法,所以我不必再担心这个问题了。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Kevin Christopher Henry    6 年前

    请注意,我在进行迁移后使用PyPi中的django reset migrations包,这样migrations文件夹就不会变得复杂,所有内容都存储在一个0001_initial.py migrations文件中。

    解决问题的方法很简单:停止这样做。