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
查詢中同時進行。
*是的,這我知道這是一個愚蠢的方式來做翻譯!