Django ORM - 没有级联删除多对多关系

Has*_*san 3 python django orm

我正在创建一个Django应用程序(使用开箱即用的ORM)来维护披萨订单.我有以下型号:

class Employee(models.Model):
    name = models.CharField(max_length=50)

class PizzaPlace(models.Model):
    name = models.CharField(max_length=50)
    employees = models.ManyToManyField(Employee)

class Order(models.Model):
    description = models.CharField(max_length=50)
    pizzaplace = models.ForeignKey(PizzaPlace)
    chef = models.ForeignKey(Employee)
Run Code Online (Sandbox Code Playgroud)

我正在使用modelformset_factory来维护每个Pizza Place的员工.我想要的是,无论一名员工被解雇或离开比萨店,他们履行的命令仍然保持完好并可供比萨店使用.目前正在发生的事情是从比萨店删除员工记录时,删除是级联的.

保持与订单保持关联的最佳方法是什么 - 特别是在过去,即使他们与Pizza地方不相关的员工被删除,也要维持订单已经完成?

Tho*_*zco 5

你可以:

  • 不删除从a中删除的员工PizzaPlace并改为设置标志
  • 使用on_delete参数将employee字段设置为null:chef = models.ForeignKey(Employee, null = True, on_delete = models.SET_NULL)

看选项的信息ForeignKeyon_deleteDjango文档,以找到适合您的使用案例.