簡體   English   中英

在Django中將CharField轉換為Choice Field(PositiveSmallIntegerField)

[英]Convert CharField to Choice Field (PositiveSmallIntegerField) in Django

我目前的模型設置如下:

Class MyClass(models.Model):
    my_field = models.CharField(max_length=100,...)

為了論證,所有的值都是"foo""bar"

我想將此轉換為PositiveSmallIntegerField,而不是使用以下設置:

Class MyClass(models.Model):
    FOO = 0
    BAR = 1
    FOO_BAR_CHOICES = (
        (FOO, 'foo')
        (BAR, 'bar')
    )
    my_field = models.PositiveSmallIntegerField(choices=FOO_BAR_CHOICES,...)

有什么方法可以將舊的my_field CharField轉換為PositiveSmallIntegerField並保留所有舊數據? 或者我是否必須向模型添加新字段,通過對舊字段運行腳本來填充值,刪除舊字段,然后將PositiveSmallIntegerField重命名為舊CharField的名稱?

沒有Django模型ChoiceField?

我認為您可以在CharField中添加“選擇”而不會丟失任何數據。 請參閱https://docs.djangoproject.com/en/1.9/ref/models/fields/#choices

但是,如果要將字段類型更改為“PositiveIntegerField”,則必須執行多個步驟。

  1. 添加PositiveIntegerField以模擬選擇
  2. 編寫數據遷移..將數據從舊字段復制到新字段
  3. 刪除舊字段。

有關Django遷移的文檔: https//docs.djangoproject.com/en/1.9/ref/django-admin/#makemigrations

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM