l'héritage d'utilisateur dans django
-
09-10-2019 - |
Question
J'ai vu deux façons extension des informations utilisateur des utilisateurs et a décidé d'adopter la méthode de l'héritage du modèle.
par exemple, je:
class Parent(User):
contact_means = models.IntegerField()
is_staff = False
objects = userManager()
Maintenant, il est fait, je l'ai téléchargé django_registration me aider à envoyer des e-mails aux nouveaux utilisateurs. La chose est, au lieu d'utiliser les formulaires d'inscription pour enregistrer un nouvel utilisateur, je veux invoquer l'e-mail l'envoi d'une capacité / de acitvation de django_registration. Donc, mon flux de travail est:
1. add new Parent object in admin page.
2. send email
Mon problème est, le django-inscription crée un nouveau profil d'enregistrement avec un nouvel utilisateur dans la table utilisateur. comment puis-je tweak ce tel que je suis en mesure d'ajouter l'entrée de l'utilisateur dans la table utilisateur personnalisée.
J'ai essayé de créer un
modelAdmin
et modifier la méthode save_model pour lancer le create_inactive_user de django_registration, mais je ne sais pas comment enregistrer l'objet généré par l'utilisateur à partir django_registration dans ma table de parent quand je l'ai en utilisant l'héritage de modèle et je n'ai pas un attribut clé étrangère dans mon parent modèle.
La solution
Il est probablement quelque chose comme:
p = Parent()
p.user_ptr = user
p.contact_means = ...
p.save()
(Django crée la clé étrangère pour vous lorsque vous faites l'héritage de modèle, plus l'attribut se terminant par _ptr)