2016-10-09 2 views
0

У меня есть две моделей в двух разных приложениях:ереименование модели ломает историю миграции

# app1 models.py 
class App1Model(models.Model): 
    pass 


# app2 models.py 
from app1.models import App1Model 

class App2Model(App1Model): 
    pass 

И я хочу, чтобы переименовать App1Model, а затем воссоздать App2Model иметь явную OneToOneField вместо волшебной app1model_ptr. Таким образом, я создаю миграцию, которая полностью удаляет App2Model (я не забочусь о данных, потому что по какой-либо причине), она работает успешно. Затем я создаю миграцию в первом приложении, которое переименовывает App1Model, и оно отлично работает, я проверяю эту таблицу с новым именем и всеми его отношениями (и с ним тоже), это нормально.

И то странно получается: когда я бегу makemigrations или migrate на app2 я получаю ошибку

django.db.migrations.exceptions.InvalidBasesError: Cannot resolve bases for [<ModelState: 'app2.App2Model'>] 

Он терпит неудачу при создании текущего состояния проекта на самой первой миграции app2 (0001_initial.py в app2 миграций) где эта модель была создана впервые, наследуя от App1Model со своим старым именем. Есть ли способ исправить это? В текущем состоянии App2Model уже удален, App1Model переименован, и я не могу ничего сделать с миграциями на app2 из-за этой проблемы.

P.S. Я использую Django 1.10.2

ответ

2

Просто нашел решение:

нужно добавить последнюю миграцию app2, где я удален App2Model в зависимости миграции app1 где я переименованная App1Model так государственный проект будет построена в правильном порядке. На самом деле сообщение об ошибке сами по себе есть что-то связанное с ним, но мне не удалось поймать момент:

Это может произойти, если вы наследуя модель из приложения с миграции (например, contrib.auth) в приложении без какой-либо миграции; см https://docs.djangoproject.com/en/1.10/topics/migrations/#dependencies для более

Я положил его здесь на будущее меня и для тех, кто страдает от подобной вещи.

Смежные вопросы