Python Django迁移重新排序列
我一直很困惑,如果在Django中迁移时有任何方法可以对列进行排序,首先在我的例子中,我的模型中没有Python Django迁移重新排序列,python,django,migrate,Python,Django,Migrate,我一直很困惑,如果在Django中迁移时有任何方法可以对列进行排序,首先在我的例子中,我的模型中没有is_person,然后最终我想在我的模型中付费后添加is_person,如models.py中的示例所示,然后问题是,即使我在迁移时正确地对模型中的值进行了排序,is\u person始终转到最后一个。有没有什么诀窍可以在支付后添加列而不删除整个数据库 Models.py Django并不关心列的顺序,一些SQL数据库似乎也不太担心。在某些SQL方言(如MySQL)中,您确实可以使用以下命令指
is_person
,然后最终我想在我的模型中付费后添加is_person
,如models.py中的示例所示,然后问题是,即使我在迁移时正确地对模型中的值进行了排序,is\u person
始终转到最后一个。有没有什么诀窍可以在支付后添加列而不删除整个数据库
Models.py
Django并不关心列的顺序,一些SQL数据库似乎也不太担心。在某些SQL方言(如MySQL)中,您确实可以使用以下命令指定“插入点”:
ALTER table table\u name在其他\u列之后添加列my\u COLUMN INTEGER
但这不是标准化的SQL。例如,对于SQL server,实现这一点的唯一方法似乎是通过
列的顺序也是“实现细节”。数据库不是用来呈现输出的,而是用来存储、检索和聚合数据的。不,Django不关心列顺序,例如,就我所知,对于SQL server来说,唯一的方法是创建一个顺序正确的新表,然后“复制”来自旧数据库的数据:有些数据库允许在任意位置插入列,但无论如何,这并不重要。如果您切换select语句中的列,它将以另一个顺序获取这些列。感谢您的响应,但这是添加alter table的正确方法吗?支付后将错误返回mysql
ALTER table app_person ADD列为_person VARCHAR(25)代码>现在可以工作了,如果我的django应用程序recognize@MarkLogan:您将需要在添加字段的位置伪造迁移,例如,通过更改最初构建表的迁移文件,从现在起,它的目标当然是添加一个额外的列。但在我在mysql中添加alter table之后,是否有必要在模型中添加added\u column
?然后迁移?@MarkLogan:Django不会查看特定的数据库来构建迁移文件(或迁移),因为迁移需要同时应用于原始数据库和以后的生产数据库。它只会在运行迁移时显示这种模型的样子。因此,它将确定仍然需要添加另一列。
class Person(models.Model):
covid_id = models.CharField(max_length=50,blank=True, null=True)
is_person = models.CharField(max_length=50,blank=True, null=True) // I want to add this
paid_by = models.CharField(max_length=50,blank=True, null=True)
date_receive = models.DateField(null=True, blank=True)
remarks = models.CharField(max_length=1500,blank=True, null=True)
eligible = models.CharField(max_length=50,blank=True, null=True)
amount_paid = models.CharField(max_length=60,blank=True, null=True)
ALTER table table_name ADD COLUMN my_column INTEGER AFTER other_column