2015-11-21 3 views
5

Я пытаюсь использовать django-registration в моем простом проекте.django-registration (1048, "Column 'last_login' не может быть null")

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 = '[email protected]' 

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 class="register"> 
    {% for field in form %} 
     <dt>{{ field.label_tag }}</dt> 
     <dd class="clearfix">{{ field }} 
     {% if field.help_text %}<div class="clearfix">{{ field.help_text }}</div>{% endif %} 
     {% if field.errors %}<div class="myerrors clearfix">{{ field.errors }}</div>{% endif %} 
     </dd> 
    {% endfor %} 
    </dl> 
<input type="submit" value="Sign Up" class="clearfix"> 
</form> 
{% endblock %} 

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

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

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

+0

Связанный вопрос (возможно, дубликат): [Обновление с Django 1.6 (с юга) до 1.8 не изменяет «last_login» в таблице пользователя] (http://stackoverflow.com/questions/29913612/upgrading-from -django-1-6-with-south-to-1-8-doesnt-modify-last-login-on-the) –

+0

@ try-catch-наконец, этот вопрос немного отличается, потому что у этого пользователя был пользовательский пользователь модель. – Alasdair

ответ

9

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

+0

Я ничего не изменил в приложении auth. –

+0

** Операции, которые необходимо выполнить: ** Применить все миграции: admin, contenttypes, zeezmem, auth, сеансы ** Выполнение миграций: ** Никаких миграций для применения. –

+2

Миграция была добавлена ​​в Django 1.8, поэтому ее следует запускать при обновлении с более ранней версии Django, даже если вы не изменили приложение auth. Если Django уже считает, что миграция была применена, вам может потребоваться вручную удалить ограничение null. – Alasdair

4

Перейти к базе данных (MySQL Terminal):

$ mysql

mysql> SELECT * FROM django_migrations;

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

mysql> TRUNCATE TABLE django_migrations;

Отпуска MySQL терминал и запустить миграцию снова в Джанго:

$ python manage.py migrate --fake-initial

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

0005_alter_user_last_login_null - [OK]

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

Перезагрузите свой MySQL и сервер, и вы готовы к работе.