模型中的 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)
我目前在这样的模型的下拉列表中提供选择:
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)