2013-03-27 9 views
9

Próbuję użyć pola adresu e-mail w domyślnym modelu użytkownika Django jako nazwy użytkownika. Używam Django 1.5 i widzę, że domyślny użytkownik ma właściwość USERNAME_FIELD.Czy mogę zmienić USERNAME_FIELD w Django 1.5 bez tworzenia niestandardowego użytkownika?

W moim projekcie chciałbym ustawić następujące USERNAME_FIELD = 'email' jako domyślne w modelu użytkownika.

Ta niewielka, ale fundamentalna modyfikacja to jedyna rzecz, którą chciałbym zmienić w modelu użytkownika. Zastanawiam się, czy istnieje sposób zmiany USERNAME_FIELD bez konieczności podklasy AbstractUser. Widziałem w this question, że możesz podklasować AbstractUser i napisać dla niego niestandardowego menedżera.

Więc zastanawiałem się, czy istnieje prostszy sposób na zmianę tej właściwości?

A jeśli nie, jaki byłby minimalny sposób przedłużenia AbstractUser używania pola e-mail jako nazwy użytkownika?

+0

użycie AbstraceBaseUser zamiast – catherine

+0

@catherine Jeśli podklasy AbstractUser skończyć się w tych problemów: http: //stackoverflow.com/questions/16605453/django-1-5-extend- domyślny-user-model-or-substitute-it i http://stackoverflow.com/questions/16601412/upgrading-django-to-1-5-with-django-cms-user-model-issue – Daviddd

Odpowiedz

4
#Your app's __init__.py 

from django.contrib.auth.models import User 

User.USERNAME_FIELD = 'email' 
+6

To podnosi błąd "django.core.management.base.CommandError: Jeden lub więcej modeli nie zostało sprawdzonych: auth.user: Pole o nazwie pod nazwą USERNAME_FIELD nie powinno być uwzględnione w REQUIRED_FIELDS w modelu wymiennym użytkownika: auth.user: The Pole USERNAME_FIELD musi być unikalne. Dodaj unique = True do parametrów pola. " dla mnie. – Martey

+0

Ten sam problem ze mną ... Zastanawiam się, czy były jakieś zmiany, które przełamują to między Mar 13 a 13 maja. Bardzo bym chciał, żeby to zadziałało ... – user1496984

1

Trzeba napisać nową klasę użytkownika niestandardowego poprzez rozszerzenie AbstractBaseUser i nie AbstractUser

stwierdzenie pocztę jako USERNAME_FIELD tam

Opcjonalnie można również zadeklarować menedżera zwyczaj użytkownika, który rozciąga się od BaseUserManager do obsługi wymaganego ograniczenia nazwy użytkownika. można usunąć użytkownika z funkcją create_user tego menedżera

Powiązane problemy