我有一个名为"foocore"的django核心应用程序.
有几个可选的类似插件的应用程序.例如"superfoo".
在我的例子中,每个插件都在CharField模型中添加了一个新选项,该模型属于"foocore".
如果选择列表发生更改,Django迁移会检测更改.
我认为这不是必要的.至少有一位其他开发者认为相同:
https://code.djangoproject.com/ticket/22837
class ActivePlugin(models.Model):
plugin_name = models.CharField(max_length=32, choices=get_active_plugins())
Run Code Online (Sandbox Code Playgroud)
获取选择的代码:
class get_active_plugins(object):
def __iter__(self):
for item in ....:
yield item
Run Code Online (Sandbox Code Playgroud)
核心"foocore"在几个项目中使用,每个安装都有一组不同的插件.Django试图创建无用的迁移....
有办法解决这个问题吗?
以前已将一个字段添加到我的 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'),
),
]
Run Code Online (Sandbox Code Playgroud)
因此用户可以在我的 UI 中选择上述选项,并将保存到表 my_client 中:
更改已部署,现在像我这样的初学者想要更改,即删除韩国并添加 2 个新选项:NSW 和 SA
我该怎么办?我需要再次迁移还是只需要更改模型中的这些选择?
我现在像这样在我的模型中使用它:
class Client(MyAppModel):
TEAM_CHOICES = (
('Unassigned', 'Unassigned'),
('ACT', 'ACT'),
('Korea', 'Korea'), …Run Code Online (Sandbox Code Playgroud)