一个字段已经添加到我的一个 MySQL 表中:
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2017-09-14 00:49
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('my_app', '0102_previous_migrations'),
]
operations = [
migrations.AddField(
model_name='my_client',
name='my_team',
field=models.CharField(choices=[('Unassigned', 'Unassigned'), ('ACT', 'ACT'), ('Korea', 'Korea'), ('National', 'National')], default='Unassigned', max_length=255, verbose_name='My Team'),
),
]
因此用户可以在我的 UI 中选择上述选项,并将保存到表 my_client 中:
- 未分配
- 行动
- 韩国
- 全国
更改已经部署,现在像我这样的初学者想更改,即删除韩国并添加 2 个新选择:NSW 和 SA
我该怎么做?我是否需要另一次迁移,或者我只需要更改模型中的这些选择?
我现在在我的模型中使用它是这样的:
class Client(MyAppModel):
TEAM_CHOICES = (
('Unassigned', 'Unassigned'),
('ACT', 'ACT'),
('Korea', 'Korea'),
('National', 'National'),
)
DEFAULT_TEAM = 'Unassigned'
my_team = models.CharField(verbose_name='MyTeam', null=False, max_length=255, choices=TEAM_CHOICES, default=DEFAULT_TEAM)
更新:
根据我的评论,我也需要迁移,一个 AlterField?
如果我想删除韩国作为选择,如果其中任何一个让韩国说未分配,我是否还必须立即更新表 my_client 中的所有现有值?我可以在迁移中使用什么命令?
最佳答案
高级方法:
创建一个只添加新选择的迁移。编写一个方法来获取所有具有旧选择的模型,并为它们提供适当的新选择 migration.RunPython
。创建删除旧选择的迁移。
关于mysql - Django 迁移改变选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46945013/