Django добавляет два поля в профиль пользователя

Я пытаюсь добавить два дополнительных поля профиля и сделать так, чтобы собственная аутентификация работала как обычно.

Я пытаюсь использовать документацию здесь и SO здесь

В моем файле настроек

#settings.py
AUTH_USER_MODEL = 'users.User'

в моей модели users.user

#users/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models

class User(AbstractUser):
    foo = models.CharField(max_length=32, default='Blue')
    bar = models.CharField(max_length=32, default='Blue')
    print "user.user"

Я создал 3 суперпользователя, которые не могут войти в админку. Я попытался синхронизировать БД после добавления пользователя. Я попытался перезагрузить сервер разработки между добавлением пользователя.

единственный раз, когда я вижу вывод печати «user.user», - это когда я запускаю команду createsuperuser.

Я думаю, что не могу войти в систему, потому что пользователь на самом деле не создается. он запускает мой класс User, а затем пропускает фактическое создание пользователя. но я новичок в этом, поэтому я могу быть далеко и далеко от моей лиги.

почему я не могу войти и как мне добавить два поля?


person JHub42    schedule 15.08.2014    source источник
comment
Как именно вы создаете пользователей?   -  person Daniel Roseman    schedule 15.08.2014
comment
Вы вообще в скорлупе ковырялись? (./manage.py shell). Попробуй подтвердить свои подозрения, from users.models import User\ u = User.objects.all()\ u[0].foo   -  person Johndt    schedule 16.08.2014
comment
@DanielRoseman: manage.py создает суперпользователя   -  person JHub42    schedule 16.08.2014
comment
@Johndt6 Johndt6 эта команда выдает синтаксическую ошибку. Я пытался добавить, но не идет. Я не знаю, что еще попробовать, чтобы сделать эту работу.   -  person JHub42    schedule 16.08.2014
comment
Я не хотел копировать и вставлять именно это — я разделял команды знаком ``. Итак, импортируйте своего пользователя, затем запустите запрос и посмотрите, существуют ли какие-либо объекты пользователя, а затем, если они есть, посмотрите, есть ли у них атрибуты вашего измененного пользователя.   -  person Johndt    schedule 16.08.2014
comment
@ Johndt6 Johndt6 я пробовал кое-что из этого раньше. но на этот раз я заставил его работать. так что я был неправ, кажется, что он создает пользователей, и у них есть поле с именем foo со значением по умолчанию синего цвета. так почему я не могу войти ни с одним из этих пользователей? гррр   -  person JHub42    schedule 16.08.2014
comment
u[0].is_staff и u[0].is_active возвращаются как True   -  person JHub42    schedule 16.08.2014


Ответы (1)


Вы читали предупреждение в документации Django?

Изменение AUTH_USER_MODEL сильно повлияет на структуру вашей базы данных. Он изменяет доступные таблицы и повлияет на построение внешних ключей и отношений «многие ко многим». Если вы собираетесь установить AUTH_USER_MODEL, вам следует установить его перед первым запуском manage.py syncdb.

Если у вас есть существующий проект и вы хотите перейти на использование пользовательской модели пользователя, вам может потребоваться изучить возможность использования инструмента миграции, такого как South, чтобы облегчить переход.

Учитывая это предупреждение, вы работаете с новой базой данных или выполняете миграцию с помощью South? Если у вас есть существующая база данных и вы внесли эти изменения, то простого запуска syncdb, скорее всего, будет недостаточно.

Если это сервер разработки без каких-либо важных данных, я бы воссоздал вашу базу данных, а затем запустил ./manage.py syncdb. Если вы используете базу данных SQLite, вы можете просто скопировать ее в другое место (если хотите сохранить данные) и снова запустить syncdb, чтобы создать новую базу данных.

Вот соответствующая документация.< /а>

Также было бы полезно точно знать, какую ошибку вы получаете. Вы пытаетесь войти в систему, и администратор сообщает вам, что ваша комбинация пользователя/пароля неверна, или это фактическая ошибка? Ваш вопрос не совсем проясняет это.

person Johndt    schedule 15.08.2014