我有一个这样的模型:
class States(Enum):
first = 'one'
second = 'two'
choices = (
(States.first, 'First'),
...
)
class MyModel(models.Model):
state = FSMField(choices=choices)
和另一个模型如:
class MyOtherModel(models.Model):
new_state = CharField(choices=myapp.choices)
出于各种原因,我删除了States
Enum并将其替换为一堆常量,如:
FIRST = 'one'
然后我迁移了我的数据库,一切都很顺利。
但是当我后来运行./manage.py makemigrations
时,我得到一个`AttributeError:module' myapp.models'没有属性'状态'。
追溯结束如下:
File "myapp/migrations/0038_xxx.py", line 12, in <module>
class Migration(migrations.Migration):
File "myapp/migrations/0038_xxx.py", line 36, in Migration
('new_state', models.SmallIntegerField(choices=[(myapp.models.States('one'), 'First'), (myapp.models.States('two'), 'Second')])),
AttributeError: module 'myapp.models' has no attribute 'States'
但如果我将States
定义粘贴回我的models
文件,则makemigrations
运行正常。
如果旧的迁移仍然需要,我该如何删除此代码?我有一堆跟随此0038
的迁移,其中大部分都已应用于生产数据库。
答案 0 :(得分:0)
要删除此旧枚举的引荐,您可以使用搜索和替换在迁移中修改<?php
$conn = mysqli_connect('localhost','username','password','database');
if (!$conn) {
die("Connection failed: ".mysqli_connect_error());
}
{。}}。
答案 1 :(得分:-1)
您是否也改变了您的选择元组以使用这样的新常量?
choices = (
(FIRST, 'First'),
...
)