Answer the question
In order to leave comments, you need to log in
Manage.py makemigrations creates incorrect migrations. How to fix?
Added three optional fields to the model, but manage.py makemigrations creates migrations of the CreateTable type (the last three fields are not in the table, ) instead of AlterTable or AlterField:
migrations.CreateModel(
name='InviteBonus',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('total', models.DecimalField(verbose_name='\u0421\u0443\u043c\u043c\u0430 \u043f\u043b\u0430\u0442\u0435\u0436\u0430', max_digits=12, decimal_places=2)),
('use_date', models.DateField(verbose_name='\u0414\u0430\u0442\u0430 \u043f\u043b\u0430\u0442\u0435\u0436\u0430')),
('line', models.PositiveIntegerField(null=True, verbose_name='\u043b\u0438\u043d\u0438\u044f', blank=True)),
('paid', models.BooleanField(default=False, verbose_name='\u0412\u044b\u043f\u043b\u0430\u0447\u0435\u043d\u043e')),
('five_per_period', models.BooleanField(default=False, verbose_name='\u043f\u044f\u0442\u044c \u0437\u0430 \u043f\u0435\u0440\u0438\u043e\u0434')),
('comment', models.CharField(max_length=100, verbose_name='\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439')),
('inviter', models.ForeignKey(related_name='invite_bonuses', default=None, verbose_name='\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a', to='accounts.TreeNode')),
('newbie', models.ForeignKey(related_name='awards', verbose_name='\u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0451\u043d\u043d\u044b\u0439', blank=True, to='accounts.TreeNode', null=True)),
],
options={
'db_table': 'invite_bonuses',
'verbose_name': '\u0432\u044b\u043f\u043b\u0430\u0442\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0437\u0430 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435',
'verbose_name_plural': '\u0432\u044b\u043f\u043b\u0430\u0442\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0437\u0430 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f',
},
bases=(models.Model,),
),
manage.py makemigrations
manage.py migrate - FAKED, потому что таблица уже есть, поэтому нужно делать добавление полей вместо создания таблицы
manage.py syncdb - Тоже ни о чём
Answer the question
In order to leave comments, you need to log in
Все запутано, но судя по всему Django ведет себя верно: Вы удалили все миграции и теперь джанго думает, что миграций нет (и мало того они не накачены, так как Вы почистили таблицу). Именно поэтому она создает миграцию с create table, а не alter table. Как вариант исправления - восстановить миграцию, которая создает таблицу без добавленных 3х полей: можно удалить 3 поля из модели, создать миграцию, затем добавить их и создать вторую миграцию, добавить информацию о первой маиграции в django_migrations (как будто она накачена) и затем накатить через migrate вторую миграциюю.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question