使用南方时如何维护模型字段的顺序结构

Aam*_*nan 2 python django django-south

假设我有这个与南方相关的模型:

class MyModel(models.Model):
    field_a = models.CharField(max_length=30)
    field_b = models.CharField(max_length=30)
Run Code Online (Sandbox Code Playgroud)

现在稍后,我想再添加一个字段,以便在之间创建该字段field_a,field_b现在我的模型看起来像:

class MyModel(models.Model):
    field_a = models.CharField(max_length=30)
    field_c = models.CharField(max_length=30)
    field_b = models.CharField(max_length=30)
Run Code Online (Sandbox Code Playgroud)

然后我迁移了这些更改,当检查MySQL中的表结构时,它field_c是在所有字段的末尾创建的.如何告诉南方维持字段顺序,例如插入后field_a.

在MySQL中,我们可以在任何现有字段之前或之后插入新字段.在南方可以这样做吗?

Ste*_*yne 7

我不相信在使用D​​jango(或南方)时不可能强制MySQL中的字段创建顺序.新字段将始终附加到表定义的末尾.

但是:列的顺序应该与您无关.继续阅读......

如果您正在针对数据库编写SQL查询,那么这是一种糟糕的形式,select *并依赖于表的字段顺序.您应该指定要选择的字段以及报告它们的顺序.这使得基础表的字段排序不重要.

此外,如果组织中的任何人当前正在编写使用select *以下内容的报告:通过在其他人之间插入新列,您可以轻松地破坏使用字段位置(而不是字段名称)的报表,因为列的索引将更改.

  • @AamirAdnan如果您正在针对数据库编写SQL查询,则不应该执行`select*` - 您应该指定您希望报告字段的顺序.这使得基础表的字段排序无关紧要. (2认同)
  • 谢谢史蒂夫,但如果"南方"也照顾它也会很好. (2认同)