world runserver manage hello docs django django-forms django-admin django-authentication django-syncdb

django - runserver - Error de la base de datos: no hay tal tabla: auth_user. Extendiendo AbstractUser y usando el modelo para registrarse en admin



python manage.py migrate (1)

Así que eliminé todo el trabajo que había hecho con esto y seguí con el usuario estándar para poder avanzar. Entonces, un día volví y logré que funcionara en una hora. Publicaré el código como referencia, pero realmente no puedo precisar cuál fue la diferencia. Sé que las formas de creación y esas cosas no eran necesarias.

models.py

class PropaUser(AbstractUser): uuid = UUIDField(auto=True)

admin.py

from django.contrib import admin from login.models import PropaUser admin.site.register(PropaUser)

settings.py

AUTH_USER_MODEL = "login.PropaUser"

otros modelos.py

class Word(models.Model): user = models.ManyToManyField(settings.AUTH_USER_MODEL) deck = models.ManyToManyField(Deck) word = models.CharField(max_length=100) def __unicode__(self): # Python 3: def __str__(self): return self.word

Esto es lo que está funcionando. No sé qué estaba causando todos los problemas antes porque creo que probé este método antes de publicar esta pregunta. Puede que esta no sea una respuesta satisfactoria, pero esto es lo que está funcionando. Anteriormente también estaba confundido acerca de lo que se necesita simplemente para agregar un campo al usuario existente. Eso es todo.

Estoy tratando de usar AbstractUser para agregar un campo al modelo de Usuario estándar de Django. Este es mi código:

class GUser(AbstractUser): uuid = UUIDField(auto=True)

Esto ha sido exitoso porque desde el caparazón puedo decir,

>>> a = GUser.objects.all() >>> a [<GUser: User1>] >>> a[0].uuid UUID(''7d1f0b7b52144a2ea20db81ce74741e3'')

El problema que estoy teniendo es registrar un nuevo usuario de / admin. Cuando creo un nuevo usuario, aparece un error en la base de datos:

no such table: auth_user

Antes de profundizar en esto, aquí está mi forms.py:

class GUserChangeForm(UserChangeForm): class Meta: model = get_user_model() class GUserCreationForm(UserCreationForm): class Meta: model = get_user_model() def clean_username(self): username = self.cleaned_data["username"] try: get_user_model().objects.get(username=username) except get_user_model().DoesNotExist: return username raise forms.ValidationError(self.error_messages[''duplicate''])

Y mi admin.py:

class GUserAdmin(UserAdmin): form = GUserChangeForm add_form = GUserCreationForm fieldsets = ( (None, {''fields'': [(''username'', ''password'')]}), (''Personal info'', {''fields'': (''is_active'',''is_staff'',''is_superuser'',''groups'', ''user_permissions'')}), (''Important dates'', {''fields'': (''last_login'', ''date_joined'')}), #(''Universal ID'', {''fields'': (''uuid'')}) ) admin.site.register(GUser,GUserAdmin)

Leí que cuando esto le sucedió a otras personas, implementaron sus propios formularios (como yo lo hice) para sobrescribir clean_username (self):

Sin embargo, no creo que se llame cuando intento agregar un usuario del administrador. El archivo auth.forms.py se está llamando aunque registro mi GUserAdmin.

Además, cuando elimino mi base de datos (sqlite3) y luego llamo a python manage.py syncdb, veo que una tabla auth_user en realidad no se está creando.

Sí, he incluido AUTH_USER_MODEL en settings.py.

Cualquier ayuda sería muy apreciada.

He leído: https://docs.djangoproject.com/en/1.5/topics/auth/customizing/#custom-users-and-the-built-in-auth-forms

Junto con toneladas de mensajes de SO, pero ninguno de ellos parece solucionar el problema que estoy teniendo.