22
假设我有django模型中的choicefield,它由多个选项组成。现在,将来如果我用其他名称(选项)更改现有选项(选项),那么具有该选项(选项)的模型中的现有记录是否也会更改?或者在管理页面中,我需要手动设置新选项?Django模型中的ChoiceField
我该如何做到这一点?
假设我有django模型中的choicefield,它由多个选项组成。现在,将来如果我用其他名称(选项)更改现有选项(选项),那么具有该选项(选项)的模型中的现有记录是否也会更改?或者在管理页面中,我需要手动设置新选项?Django模型中的ChoiceField
我该如何做到这一点?
ChoiceFields都存储在数据库中的值,因此采取从the documentation一个例子:
class Foo(models.Model):
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
该数据库将保存“M”和“F”,所以如果你一天决定重命名这些像这样*:
class Foo(models.Model):
GENDER_CHOICES = (
('M', 'Homme'),
('F', 'Femme'),
)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
然后在任何地方使用扩展值“男”或“女”现在有“男士”或“指数Femme”。
如果您想自己更改数值(即'M'和'F'),那么您需要更新数据库,所以如果您想将'M'更改为'H',那么您' d使用update
:
Foo.objects.filter(gender = 'M').update(gender = 'H')
除非你有一个很好的理由,我想避免这样做 - 因为你需要确保你的改变GENDER_CHOICES
和你update
查询中同时进行。
*是的,这我知道这是一个愚蠢的方式来做翻译!