我的任务是为当前使用 Django 2.2.24 的项目升级 Django 版本。它包含一个模型(具有现有迁移),大致如下所示:
class Membership(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
type = models.ForeignKey(MembershipType, on_delete=None)
从 Django 3.0 开始,on_delete=None
会导致错误,因为 on_delete 应该是可调用的。为了避免错误,必须更改模型和现有迁移。
就其本身而言,像这样更改模型不是问题:
class Membership(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
type = models.ForeignKey(MembershipType, on_delete=models.SET_NULL, null=True)
但是现有的数据库还不知道相应的字段可以为空,因此需要进行新的迁移。
我目前看到的最好的方法是:
- 改变模型
- 使用 Django 2.2.24 创建和应用迁移
- 手动更改旧迁移
有没有更优雅的方法来解决这个问题?