运行python manage.py migrate
后,Django将一直返回:
Running migrations:
No migrations to apply.
Your models have changes that are not yet reflected in a migration, and so won't be applied.
Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.
嗯,这很有趣,我不记得做出改变。
python manage.py makemigrations --dry-run --verbosity=3
Generated by Django 1.11 on 2017-0x-xx xx:xx
from __future__ import unicode_literals
from django.db import migrations, models
import django_cryptography.fields
class Migration(migrations.Migration):
dependencies = [
('myApp', '0019_auto_xxxxxxx_xx'),
]
operations = [
migrations.AlterField(
model_name='myModel',
name='encrypted_field',
field=django_cryptography.fields.encrypt(models.CharField(verbose_name=models.CharField(verbose_name=models.CharField(max_length=50, verbose_name='Encrypted Field')))),
),
migrations.AlterField(
model_name='myModel',
name='second_encrypted_field',
field=django_cryptography.fields.encrypt(models.CharField(verbose_name=models.CharField(verbose_name=models.CharField(max_length=50, verbose_name='Second encrypted field')))),
),
]
那没关系,但完全相同的AlterField()在0018_auto
中运行。我已经在几个系统上对其进行了测试,甚至试图将这些迁移用于实际和应用但是,但警告仍然会在0020_auto
中重新出现。
myModel.__str__
确实引用了其中一个加密字段,我认为这些字段会导致迁移中的递归。不过,我无法理解为什么这会让Django继续捡起它们。
知道可能导致这种情况的原因是什么?这是一个错误吗?与django_cryptography
的性质有关的东西?还有别的吗?