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 суперпотребители, които не могат да влязат в admin. Опитах да синхронизирам DB след добавяне на потребител. Опитах да рестартирам dev сървъра между добавянето на потребител.

единственият път, когато виждам резултата от print "user.user", е когато стартирам командата createsuperuser.

мисля, че не мога да вляза, защото потребителят всъщност не се създава. той изпълнява моя потребителски клас и след това пропуска действителното създаване на потребителя. но аз съм нов в това, така че може да съм далеч и далеч от моята лига.

защо не мога да вляза и как да добавя двете полета?


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 createsuperuser   -  person JHub42    schedule 16.08.2014
comment
@Johndt6 тази команда дава синтактична грешка. Опитах се да добавя, но не се получи. сега не знам какво друго да опитам, за да направя това да работи.   -  person JHub42    schedule 16.08.2014
comment
Не исках да копирам и поставям точно това - разделях командите с ``. Така че импортирайте своя потребител, след това стартирайте заявка и вижте дали съществуват потребителски обекти, след което, ако съществуват, вижте дали имат атрибути на вашия модифициран потребител.   -  person Johndt    schedule 16.08.2014
comment
@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