Sto cercando di utilizzare AbstractUser per aggiungere un campo al modello utente standard di Django. Questo è il mio codice:Errore del database: nessuna tabella: auth_user. Estensione di AbstractUser e utilizzo del modello per la registrazione su admin
class GUser(AbstractUser):
uuid = UUIDField(auto=True)
Questo ha avuto successo perché dalla shell che posso dire,
>>> a = GUser.objects.all()
>>> a
[<GUser: User1>]
>>> a[0].uuid
UUID('7d1f0b7b52144a2ea20db81ce74741e3')
Il problema che sto avendo è la registrazione di un nuovo utente dal/admin. Quando creo un nuovo utente ottengo un errore di database:
no such table: auth_user
Prima di entrare più in esso, ecco la mia 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'])
E il mio 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)
ho letto che quando questo è successo ad altre persone hanno implementato le loro proprie forme (come ho fatto io) per sovrascrivere clean_username (self):
Tuttavia non penso che questo venga chiamato quando tento di aggiungere un utente dall'admin. Il file auth.forms.py viene chiamato anche se registro il mio GUserAdmin.
Inoltre, quando cancello il mio database (sqlite3) e poi chiamo python manage.py syncdb, vedo che una tabella auth_user non viene effettivamente creata.
Sì, ho incluso AUTH_USER_MODEL in settings.py.
Qualsiasi aiuto sarebbe molto apprezzato.
insieme a tonnellate di SO posti, ma nessuno di loro sembra per risolvere il problema che sto avendo.
Sembra che questo thread abbia la tua risposta: https://groups.google.com/forum/#! topic/django-users/kOVEy9zYn5c Apparentemente, il modello personalizzato non onora il 'Meta' per il manager – karthikr
@karthikr Avevo visto quella pagina ma non ero sicuro se stessimo avendo lo stesso esatto problema. La soluzione per cambiare effettivamente il codice in auth.forms.py? – FrancescoA
Penso che sia la risposta di Scott Anderson il 20 marzo – karthikr