【发布时间】:2020-11-05 09:20:31
【问题描述】:
我遇到了一个我以前真的没有处理过的问题。我有一个从 django 1 ==> 2 升级的任务。(django 1 在处理关系时不需要 on_delete)
我有几个关键模型内部有关系,但我绝对不想 CASCADE 那些记录。例如,如果用户删除了他们的帐户,我不希望删除他们的费用。也许我们需要保留这些费用实例以供以后税务记录等使用。
我了解到 DO_NOTHING 也可能很危险。
对于这样的模型,在处理 ForeignKeys 时最好的做法是什么?
提前感谢所有帮助。
class Expenses(models.Model):
user = models.ForeignKey(Account, null=True, blank=True,
on_delete=models.?)
event = models.ForeignKey(Event, null=True, blank=True,
on_delete=models.?)
payee = models.CharField(max_length=128, null=True, blank=True)
category = models.ForeignKey(Category, blank=True, null=True,
related_name='expense_category', on_delete=models.?)
【问题讨论】:
-
如果仍然有引用它的东西,您可以使用
.PROTECT来防止删除模型。 -
如果你在 Django-1.x 中没有指定这个,那么它需要
CASCADE,所以实际上你已经使用了级联。
标签: django django-models django-database