mou*_*ail 5 python django python-3.x django-migrations
我有一个 Django 模型,以前看起来像这样:
class Car(models.Model):
manufacturer_id = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
还有另一种模型称为Manufacturer场id指。然而,我意识到使用 Django 的内置外键功能会很有用,所以我将模型更改为:
class Car(models.Model):
manufacturer = models.ForeignKey(Manufacturer)
Run Code Online (Sandbox Code Playgroud)
此更改似乎立即工作正常,查询工作没有错误,但是当我尝试运行迁移时,Django 输出以下内容:
- Remove field manufacturer_id from car
- Add field manufacturer to car
Run Code Online (Sandbox Code Playgroud)
执行此迁移将清除数据库中的所有现有关系,因此我不想这样做。我真的根本不想进行任何迁移,因为查询等Car.objects.get(manufacturer__name="Toyota")工作正常。我想要一个适当的数据库外键约束,但这不是一个高优先级。
所以我的问题是:有没有一种方法可以进行迁移或其他方法,使我可以将现有字段转换为外键?我无法使用,--fake因为我需要在开发、产品和同事的计算机上可靠地工作。
小智 7
您可以进行数据迁移
我不确定,可能还有另一种解决方案,您可以将字段重命名为您想要的名称,然后将字段更改为新类型(进行迁移)
operations = [
migrations.RenameField(
model_name='car',
old_name='manufacturer_id',
new_name='manufacturer',
),
migrations.AlterField(
model_name='car',
name='manufacturer',
field=ForeignKey(blank=True, null=True,
on_delete=django.db.models.deletion.CASCADE
),
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6291 次 |
| 最近记录: |