我正在将旧代码更新为最新的Django版本。
外键需要“,AtomicLong
”。
几乎有一百个。如何为每个自动添加“,on_delete = models.PROTECT”?
答案 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]。