Модель прокси Django не может быть перенесена при обновлении 1.4 -> 1.7

Имея модель, как показано ниже

from django.contrib.auth.models import User # has migrations in 1.7

class MyProxyUser(User):
    class Meta:
        proxy = True

в приложении без миграций выдает следующую ошибку при запуске тестов:

django.db.migrations.state.InvalidBasesError: Cannot resolve bases for [<ModelState: 'django_proxy_model_problems.MyProxyUser'>]
This can happen if you are inheriting models from an app with migrations (e.g. contrib.auth)
 in an app with no migrations; see https://docs.djangoproject.com/en/1.7/topics/migrations/#dependencies for more

Прочитав оба

Я не могу понять, что мне делать, чтобы решить эту проблему (manage.py makemigrations сообщает No changes detected)

Проблему можно воспроизвести, запустив tox -e py27-django17 с помощью этого репозитория github.

Это можно воспроизвести с Django 1.7 и 1.8, но отлично работает с 1.4.


person zsepi    schedule 11.05.2015    source источник


Ответы (1)


Выполнить manage.py makemigrations <app_label>. Django не создаст папку миграции, если она не существует, если только вы явно не укажете метку приложения. Это потому, что приложения без миграции (по-прежнему) поддерживаются.

Если папка migrations существует в приложении и имеет файл __init__.py (даже на Python 3), Django подберет приложение как перенесенное приложение и создаст миграцию только с помощью manage.py makemigrations.

person knbk    schedule 11.05.2015
comment
Это работает только в том случае, если прокси-модель является единственной моделью в модуле. - person man2xxl; 07.07.2015