我使用Django1.11,PostgreSQL 9.6和Django迁移工具。我无法找到指定列顺序的方法。在最初的迁移中,更改字段的顺序是可以的,但是migrations.AddField()调用怎么办?AddField调用也可能发生在初始迁移的外键添加中。有没有什么方法可以指定顺序,或者我只是痴迷于顺序,但我不应该?
migrations.AddField()
AddField
讨论后更新
PostgreSQL DBMS不支持位置列添加。因此,期望迁移工具为列添加提供此功能实际上是毫无意义的。
w6lpcovy1#
AFAIK,没有官方支持的方法来实现这一点,因为字段应该是原子的,它不应该是相关的。然而,它也扰乱了我的强迫症方面,我喜欢我的列被排序,当我需要调试的东西在dbshell,例如。下面是我发现你可以做的:
dbshell
python manage.py makemigrations
fields
migrations.createModel
dgtucam12#
我不是100%确定PostgreSQL的语法,但这是在你创建数据库后在SQL中的样子。我确信PostgreSQL会有一个等价的语法:修改表格yourtable。yourmodel修改列columntochangecolumntochange INT(11)在columntoplaceunder之后不为空;或者,如果您有一个GUI(在我的例子中是mysql工作台),您可以转到表设置,并根据需要简单地拖放列,然后单击APPLY。
yourtable
yourmodel
columntochange
columntoplaceunder
2条答案
按热度按时间w6lpcovy1#
AFAIK,没有官方支持的方法来实现这一点,因为字段应该是原子的,它不应该是相关的。然而,它也扰乱了我的强迫症方面,我喜欢我的列被排序,当我需要调试的东西在
dbshell
,例如。下面是我发现你可以做的:python manage.py makemigrations
进行迁移fields
重新排序为migrations.createModel
dgtucam12#
我不是100%确定PostgreSQL的语法,但这是在你创建数据库后在SQL中的样子。我确信PostgreSQL会有一个等价的语法:
修改表格
yourtable
。yourmodel
修改列columntochange
columntochange
INT(11)在columntoplaceunder
之后不为空;或者,如果您有一个GUI(在我的例子中是mysql工作台),您可以转到表设置,并根据需要简单地拖放列,然后单击APPLY。