2015-11-21 13 views
5

Tôi đang cố gắng sử dụng đăng ký django trong dự án đơn giản của mình.đăng ký django (1048, "Cột 'last_login' không thể rỗng")

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')), 

mẫu đăng ký:

{% 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 %} 

Khi tôi sẽ đăng ký người dùng mới, tôi nhận được một lỗi:

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

Tôi không sử dụng mô hình 'Người dùng tùy chỉnh'.

+0

Câu hỏi liên quan (có thể trùng lặp): [Nâng cấp từ Django 1.6 (với nam) lên 1.8 không sửa đổi 'last_login' trên bảng người dùng] (http://stackoverflow.com/questions/29913612/upgrading-từ -django-1-6-với-nam-tới-1-8-không-sửa đổi-lần-đăng-nhập-on) –

+0

@ try-catch-finally câu hỏi đó hơi khác một chút, bởi vì người dùng đó có một người dùng tùy chỉnh mô hình. – Alasdair

Trả lời

9

Đảm bảo bạn đã chạy tất cả các lần di chuyển cho ứng dụng auth. Có một di chuyển 0005_alter_user_last_login_null.py làm cho trường last_login tùy chọn.

+0

Tôi chưa thay đổi gì trong ứng dụng auth. –

+0

** Hoạt động để thực hiện: ** Áp dụng tất cả các di chuyển: admin, contenttypes, zeezmem, auth, phiên ** Đang di chuyển: ** Không có di chuyển để áp dụng. –

+2

Việc di chuyển đã được thêm vào trong Django 1.8, vì vậy nó sẽ được chạy khi bạn nâng cấp từ phiên bản cũ hơn của Django, ngay cả khi bạn chưa thay đổi ứng dụng auth. Nếu Django đã nghĩ rằng việc di chuyển đã được áp dụng, bạn có thể cần phải bỏ ràng buộc không rỗng theo cách thủ công. – Alasdair

4

Tới cơ sở dữ liệu của bạn (MySQL Terminal):

$ mysql

mysql> SELECT * FROM django_migrations;

Nếu bạn thấy một số hồ sơ, tốt. Xóa chúng.

mysql> TRUNCATE TABLE django_migrations;

Để lại MySQL thiết bị đầu cuối, và chạy di cư một lần nữa trong django:

$ python manage.py migrate --fake-initial

Hãy chắc chắn rằng thông điệp này xuất hiện:

0005_alter_user_last_login_null - [OK]

sau đó bạn có thể thấy một số các xung đột khác, điều đó là tốt bởi vì chúng ta chỉ cần thực hiện điều này trên.

Khởi động lại MySQL và Máy chủ của bạn và bạn đã sẵn sàng sử dụng.

Các vấn đề liên quan