Django在模型中下降

时间:2015-10-22 15:18:59

标签: django django-models django-admin

我目前在这样的模型的下拉菜单中提供选择:

class FoodType(models.Model):
  type = models.CharField(max_length=30, unique=True)

  def __unicode__(self):
    return self.type

class Food(models.Model):
  name = models.CharField(max_length=30, unique=True)
  type = models.ForeignKey(FoodType)

  def __unicode__(self):
    return self.name

我这样做而不是硬编码选择,因为我想在部署应用程序后通过管理员提供添加/删除/更改FoodTypes的选项。但后来我才意识到,如果FoodType被删除,食物依赖,那么食物也会被删除,这是我不想要的。我希望能够保留所有食物记录,除非我明确要删除它。

还有更好的方法可以让用户通过管理员修改FoodTypes吗?

谢谢:)

1 个答案:

答案 0 :(得分:1)

您可以将ForeignKey字段的on_delete参数设置为不同于CASCADE的值(默认值)。

例如:

type = models.ForeignKey(FoodType, null=True, on_delete=models.SET_NULL)