Django-registration (1048, "Столбец" last_login "не может быть нулевым" )

Я пытаюсь использовать django-registration в моем простом проекте.

settings.py

# DJANGO REGISTRATION
ACCOUNT_ACTIVATION_DAYS = 7
AUTH_USER_EMAIL_UNIQUE = True
EMAIL_HOST = 'localhost'
EMAIL_PORT = 1025
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False
DEFAULT_FROM_EMAIL = '[removed_email]'

urls.py

url(r'^accounts/', include('registration.backends.hmac.urls')),

Шаблон регистрации:

{% extends "index.html" %}
{% block content %}
<h1>Registration</h1>
<form method="post" action="">
 {% csrf_token %}
 <dl>
 {% for field in form %}
 <dt>{{ field.label_tag }}</dt>
 <dd>{{ field }}
 {% if field.help_text %}<div>{{ field.help_text }}</div>{% endif %}
 {% if field.errors %}<div>{{ field.errors }}</div>{% endif %}
 </dd>
 {% endfor %}
 </dl>

</form>
{% endblock %}

Когда я собираюсь регистрировать нового пользователя, я получаю сообщение об ошибке:

Django Version: 1.9c1
Exception Type: IntegrityError
Exception Value: (1048, "Column 'last_login' cannot be null")

Я не использую модель CustomUser.

2 ответа

Убедитесь, что вы выполнили все миграции для приложения auth. Существует миграция 0005_alter_user_last_login_null.py, которая делает поле last_login необязательным.


Перейдите в свою базу данных (терминал MySQL):

$ mysql

mysql> SELECT * FROM django_migrations;

Если вы видите некоторые записи, хорошо. Удалите их.

mysql> TRUNCATE TABLE django_migrations;

Оставьте терминал MySQL и снова выполните миграции в django:

$ python manage.py migrate --fake-initial

Убедитесь, что это сообщение появилось:

0005_alter_user_last_login_null - [OK]

тогда вы можете увидеть некоторые другие конфликты, это нормально, потому что нам нужно только выполнить эту миграцию.

Перезагрузите свой MySQL и сервер, и вам будет хорошо.

licensed under cc by-sa 3.0 with attribution.