【发布时间】:2021-10-31 16:54:27
【问题描述】:
我正在使用 Django ORM 创建我的数据库表并执行其余操作。但是,我注意到如果我在数据库中看到的列不是我在 django 模型中指定的顺序。
比如我的模型是
class ItemMetaData(models.Model):
item = models.ForeignKey(Item, on_delete=CASCADE)
field = models.CharField(max_length=80)
field_value = models.CharField(max_length=80)
created_at = models.DateTimeField(auto_now_add=True)
modified_at = models.DateTimeField(auto_now=True)
但是在数据库中,当我看到表时,外键是最后一列,所以看起来像
id | field | field_value | created_at | modified_at | item_id
我希望我的 item_id 成为 id 之后的第一列。像这样:
id | item_id | field | field_value | created_at | modified_at
这可能吗?我试图搜索,但是当我寻找排序时,所有答案都假设它是行排序并建议使用order_by
迁移文件如下所示:
migrations.CreateModel(
name='ItemMetaData',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('field', models.CharField(max_length=80)),
('field_value', models.CharField(max_length=80)),
('created_at', models.DateTimeField(auto_now_add=True)),
('modified_at', models.DateTimeField(auto_now=True)),
],
options={
'db_table': 'app_item_meta_data',
},
),
migrations.AddField(
model_name='itemmetadata',
name='item',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='app.item'),
),
【问题讨论】:
-
我不明白为什么订单是相关的。可以分享一下迁移文件吗?可能有人可以更改迁移文件,然后迁移一个空数据库以尊重字段顺序。
-
当我查看数据库时,这更像是一种强迫症,这似乎很荒谬。显然,当我查询时,我可以指定我想要的字段的顺序,所以这不是什么大问题。让我编辑问题以添加迁移文件
标签: sql-server python-3.x django django-models django-orm