ZinBu
@ZinBu
Продам гараж (в лс)

Почему Heroku не видит миграции, которые создал?

Heroku создает миграции, но не видит их во время применения!

После деплоя применил команду:
$ heroku run python manage.py migrate
Но как выяснилось она создала только системные таблицы подключенных модулей, но не создала таблицы моделей, которые я описал в приложении (stats/models.py).

Я попробовал выполнить миграции, явно указав приложение в команде. Результат обескураживает:
$ heroku run python manage.py makemigrations stats
Running python manage.py makemigrations stats on ⬢ myapp... up, run.8388 (Free)
Migrations for 'stats':
  stats/migrations/0001_initial.py
    - Create model AuthUser
    - Create model SocialAuthUserSocialAuth
    - Create model Task
    - Create model User

и
$ heroku run python manage.py migrate stats
Running python manage.py migrate stats on ⬢ myapp... up, run.4095 (Free)
CommandError: App 'stats' does not have migrations.

При локальной разработке таких проблем не наблюдалось.

Еще пробовал в INSTALLED_APPS явно указать путь до моделей, но так даже команды не работают, видимо это не причем.
Сама настройка:
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'stats.apps.StatsConfig',
    'rest_framework',
    'social_django'
]


Модели:
class User(models.Model):
    fullname = models.CharField(max_length=200, default='')
    uid = models.CharField(max_length=200, default='')
    nickname = models.CharField(max_length=200, default='')
    extra_token = models.CharField(max_length=200, default='')
    token_got = models.DateTimeField('date token got', default=datetime.now)

    def __str__(self):
        return self.fullname

    class Meta:
        db_table = 'stats_user'


class Task(models.Model):
    nickname = models.CharField(max_length=200, default='')
    busy = models.BooleanField(default=False)

# Модели ниже изначально были получены командой  python manage.py inspectdb 
# и связаны с библиотекой social_django. У меня была необходимость делать запросы туда.
# На всякий случай я это пишу, но сам думаю, что это не может быть причиной моей проблемы.
# Ведь локально все норм.
class AuthUser(models.Model):
    password = models.CharField(max_length=128)
    last_login = models.DateTimeField(blank=True, null=True)
    is_superuser = models.BooleanField()
    username = models.CharField(unique=True, max_length=150)
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=150)
    email = models.CharField(max_length=254)
    is_staff = models.BooleanField()
    is_active = models.BooleanField()
    date_joined = models.DateTimeField()

    class Meta:
        managed = False
        db_table = 'auth_user'


class SocialAuthUserSocialAuth(models.Model):
    provider = models.CharField(max_length=32)
    uid = models.CharField(max_length=255)
    extra_data = models.TextField()  # This field type is a guess.
    user = models.ForeignKey(AuthUser, models.DO_NOTHING)

    class Meta:
        managed = False
        db_table = 'social_auth_usersocialauth'
        unique_together = (('provider', 'uid'),)
  • Вопрос задан
  • 269 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы