如何自动更新外键使其具有“,on_delete = models.PROTECT”

时间:2019-09-12 19:01:56

标签: django

我正在将旧代码更新为最新的Django版本。
外键需要“,AtomicLong”。
几乎有一百个。如何为每个自动添加“,on_delete = models.PROTECT”?

1 个答案:

答案 0 :(得分:4)

您可以在此处尝试使用正则表达式。假设ForeignKey是在一行上定义的,并且您没有使用ForeignKey定义其他内容,则可以尝试编辑该内联,例如使用sed [wiki]

sed -i -E 's/(ForeignKey\s*\(.*)\)\s*$/\1, on_delete=models.PROTECT)/' */models.py

因此,我们在这里将内联替换目录中的所有models.py,在该目录中,我们将ForeignKey(…)替换为ForeignKey(…, on_delete=models.CASCADE)

也许不是所有的ForeignKey都可以被替换,但是您可以稍微修改正则表达式以接受不同的模式。

请注意,您可能还需要更新OneToOneField fields [Django-doc]