Django personnalisé modèle d'utilisateur admin, la relation “auth_user” n'existe pas
J'ai un utilisateur personnalisée modèle comme ci-dessous:
class User(AbstractUser):
subscribe_newsletters = models.BooleanField(default=True)
old_id = models.IntegerField(null=True, blank=True)
old_source = models.CharField(max_length=25, null=True, blank=True)
Et à l'aide de la builtin UserAdmin
admin.site.register(User, UserAdmin)
Lors de l'édition de l'enregistrement de l'utilisateur fonctionne bien, mais quand j'ajoute un utilisateur, j'obtiens l'erreur suivante
Exception Value:
relation "auth_user" does not exist
LINE 1: ...user"."is_active", "auth_user"."date_joined" FROM "auth_user...
Vous devez vous connecter pour publier un commentaire.
Après quelques recherches, j'ai trouvé ce
https://docs.djangoproject.com/en/1.5/topics/auth/customizing/#custom-users-and-the-built-in-auth-forms
Le coupable est une fonction
clean_username
à l'intérieur deUserCreationForm
à l'intérieur dedjango.contrib.auth.forms.py
. Quelques billets ont été créés, mais apparemment, les développeurs ne pense pas que c'est un défaut:https://code.djangoproject.com/ticket/20188
https://code.djangoproject.com/ticket/20086
La
User
dans ce fichier est directement référence à la builtin modèle utilisateur.Pour le fixer, j'ai créé mes formulaires personnalisés
Ou vous pouvez essayer de monkey patching l'original
UserCreationForm
pour remplacer leUser
variable.Cela est dû à la migration n'est pas exécutée. Ce problème est résolu pour moi en exécutant la commande suivante:
python manage.py syncdb
Django 1.8
Si votre application n'utilise pas encore les migrations, alors que cela pourrait également être le problème, comme contrib.auth les utilise. Permettant les migrations pour mon application résolu pour moi.
__init__.py
, sinon Django ne pourra pas créer de la migration initiale, et ensuite n'migrate
.Migrer votre application (l'un avec de l'utilisateur personnalisée modèle), et seulement ensuite le reste:
Vous pouvez également contrôler l'ordre des migrations pour s'assurer que cela se fait automatiquement, voir https://docs.djangoproject.com/en/1.10/howto/writing-migrations/#controlling-the-order-of-migrations
J'ai dû:
Elle était le double ennuyeux parce que je devais le faire sur des serveurs locaux et distants. J'ai essayé tout à la suppression des migrations ou de la suppression de la base de données mais alors git push/pull de la vieille migrations et foiré le tout.
P. S. Ce bug s'est posé au début parce que j'ai couru les migrations avant d'ajouter
AUTH_USER_MODEL = 'customauth.MyUser'
à lasettings.py
fichier, ce qui n'est pas la version contrôlée.