Подтвердить что ты не робот

Обновление с Django 1.6 (с юга) до 1.8 не изменяет "last_login" в пользовательской таблице

Я обновил Django 1.6.5 (с южными переходами) до Django 1.8. Я следовал инструкциям здесь: https://docs.djangoproject.com/en/1.8/topics/migrations/#upgrading-from-south

Итак, я удаляю Юг, удаляю свои предыдущие миграции и запускаю python manage.py makemigrations, который создает новый файл миграции. Затем я запускаю python manage.py migrate --fake-initial, чтобы подделать начальную миграцию. Затем я запустил python manage.py migrate.

Все работает нормально, без ошибок.

У меня есть пользовательская модель, которая наследует AbstractBaseUser. В Django 1.8 кажется, что есть изменение в поле last_login, где теперь он может принять значение null (https://docs.djangoproject.com/fr/1.8/ref/contrib/auth/#django.contrib.auth.models.User.last_login).

Проблема, которую я имею, заключается в том, что миграция не изменяет поле last_login в таблице базы данных, чтобы принять нулевые значения. В результате, когда я пытаюсь сохранить, я получаю IntegrityError, говоря (1048, "Column 'last_login' cannot be null").

Как я могу это исправить? Нужно ли вручную изменять поле в базе данных или есть способ исправить его с помощью миграций?

Edit Когда я запускаю python manage.py migrate --fake-initial, вывод следующий: Выполнение миграции:

  Rendering model states... DONE
  Applying contenttypes.0001_initial... FAKED
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0001_initial... FAKED
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying core.0001_initial... FAKED
  Applying admin.0001_initial... FAKED
  Applying sessions.0001_initial... FAKED

Однако, когда я смотрю в базе данных, я все еще вижу user_last_login как not-null.

4b9b3361

Ответ 1

Как отмечено в примечания к выпуску 1.8:

Если вы используете пользовательскую модель, которая наследуется от AbstractUser, вам нужно запустить makemigrations и произвести миграцию для вашего приложения, которое содержит эту модель.