模型中的 Django 下拉菜单

Django drop downs in model

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

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

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

有没有更好的方法来做到这一点,仍然允许用户通过管理员修改 FoodTypes?

谢谢:)

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

例如:

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