2011-04-30 5 views
0

Dans Django, je fait une classe UserProfile et lié à l'utilisateur avec utilisateur = models.OneToOneField (utilisateur)Django admin profil list_editable

Cela fonctionne très bien, ressemble à ceci:

enter image description here

Où UserProfile est visible (avec un seul champ).

Cependant, j'utilise également l'option list_editable que j'ai découverte aujourd'hui. Je peux obtenir les champs d'utilisateur éditables dans la vue de liste, comme ceci:
enter image description here

Très belle caractéristique, mais je peux trouver peu d'informations sur. Ce que je veux faire est d'ajouter des champs UserProfile à cette liste d'une manière éditable (le champ email_verified dans l'exemple ci-dessus, pour commencer). Est-ce possible (sans changer le code Django)?

Si oui, comment ferais-je cela?

Un grand merci,

MISE À JOUR: Sérieusement, comment puis-je faire de la question plus utile si je ne peux pas utiliser des liens, des images, rien? L'information sur list_editable est dans l'aide de Django, j'espère que Google aide.

+0

Merci Bala R pour ajouter des images! – Mark

Répondre

0

Vous pouvez utiliser l'héritage du modèle utilisateur et vous débarrasser du profil. À mon avis, c'est mieux. Ici vous pouvez lire ceci: http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/

Et puis il suffit d'ajouter à email_verified list_editable

+0

Personnellement, je ne suis pas trop content de l'approche de l'héritage, mais cela répond à la question, merci! – Mark

+0

Ajoutez "email_verified" à list_display et ajoutez la méthode "email_verified" à AdminModel pour l'utilisateur qui retourne juste email_verified: Vous pouvez alors réécrire cette méthode https://github.com/django/django/blob/1.2.X/django/contrib/ admin/options.py # L458 qu'il renvoie formset qui peut enregistrer les modifications pour email_verified au modèle de profil. Et vraiment email_verified ne peut pas être dans eidtable_list, car ce n'est pas un champ de modèle utilisateur, donc vous devriez pirater autre chose dans l'application d'administration. Mais si vous avez choisi la première proposition, tout ce dont vous avez besoin - ajoutez "email_verified" à list_dispalay et editable_list – Alerion