python - 使用 south 时如何维护模型字段顺序结构

标签 python django django-south

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

class MyModel(models.Model):
    field_a = models.CharField(max_length=30)
    field_b = models.CharField(max_length=30)

现在我想再添加一个字段,所以我在 field_afield_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)

然后我迁移了更改,在检查 MySQL 中的表结构时,在所有字段的末尾创建了 field_c。我怎样才能告诉南方维护田地秩序,例如在 field_a 之后插入。

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

最佳答案

我不认为在使用 Django(或 South)时无法在 MySQL 中强制创建字段的顺序。新字段将始终附加到表定义的末尾。

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

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

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

关于python - 使用 south 时如何维护模型字段顺序结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14196112/

相关文章:

python - django 在一个字段中多个更新日期

python - Django "list_filter"基于管理查询集

django - 通过数据迁移添加默认标签

python - django-south:先有鸡+有初始数据

django - Django 是否应该自己实现 DB on_delete 规则?

python - 矩形感兴趣区域超出范围时出错 - opencv

python - 通过 conda 安装软件包时,奇怪的重复序列打印到控制台

python - 我如何在不事先下载和转换的情况下将音频从 pytube 流式传输到 FFMPEG 和 discord.py

python - 打印并返回 python

python - 如何修复 Django 中的错误 "invalid literal for int() with base 10: ' Independence'?