Django-fr

Forum

  • Accueil
  • » Django-fr
  • » DjangoAdmin Clé étrang. Select des objets depuis table référencée

#1 11-05-2012 11:04:41

MichaelP
Membre
Inscription : 11-05-2012
Messages : 3

DjangoAdmin Clé étrang. Select des objets depuis table référencée

Bonjour,

Je suis en train de réaliser ma première application django - vraiment
très simple.

Je m'appuie pour le moment uniquement sur django-admin. Je tombe sur
une demande de fonctionnalité que je n'arrive pas à implémenter, ni à
savoir si elle a déjà été écrite par d'autres.


J'ai une deux tables, Client et Contact. La table Contact contient une
clé étrangère pointant vers la table Client.

Grâce au "admin.TabularInline" je peux afficher, depuis la fiche
Client, un formulaire pour modifier les données des Contacts déjà
attachés au client et ajouter de nouveaux Contact en les créant.

Il m'est demandé, au lieu d'afficher tous ces champs pour chaque
Contact, de pouvoir simplement ajouter ou enlever des contacts
existants depuis une liste. Un champs select multiple, contenant tous
les contacts, pourrait faire l'affaire.


Malheureusement je n'ai rien lu dans la docs qui suggère que ceci est
réalisable.


Avez-vous un tuyau à me donner? Pour info, j'utilise django 1.4


Merci d'avance.


Michaël P.


PS: où sont les archives 2011 et 2012 de la liste?  La page
http://lists.afpy.org/mailman/listinfo/django pointe vers
http://lists.afpy.org/pipermail/django/ qui s'arrête à septembre 2010.

Hors ligne

#2 11-05-2012 13:22:33

David Thenon
Membre
Inscription : 11-08-2010
Messages : 156
Site Web

Re : DjangoAdmin Clé étrang. Select des objets depuis table référencée

Salut,

Si c'est uniquement une question de séléction d'entrées de ton modèle pour y
appliquer une action, est ce que une "admin action" [1] ne te serait pas
suffisant ?

Le seul truc c'est que les cases à cocher des contacts ne seront pas pré-
séléctionnés par défaut comme dans un formulaire dédié mais tu peux
visuellement représenter leur état "séléctionné" dans un attribut booléen dans
le "list_display" de ton modeladmin.

[1] https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/

Hors ligne

#3 11-05-2012 15:37:47

MichaelP
Membre
Inscription : 11-05-2012
Messages : 3

Re : DjangoAdmin Clé étrang. Select des objets depuis table référencée

Merci de cette réponses.


Après une lecture rapide des «Admin actions», il me semble que
celles-ci permettemt des actions groupées sur les listes d'objets,
affichés dans l'admin.

Cela répond à la moitié de mon problème. Avant d'écrire l'action, il
faut que, depuis la page modification d'un Client, j'affiche la liste
de tous les contacts dans un select multiple, en presélectionnant ceux
qui pointent déjà vers mon Client.


Existe-t-il un moyen simple pour réaliser cette première partie? Ou
bien faut-il que je créé un formulaire et que je modifie le template
de l'admin?


Merci d'avance

Hors ligne

#4 11-05-2012 16:27:08

David Thenon
Membre
Inscription : 11-08-2010
Messages : 156
Site Web

Re : DjangoAdmin Clé étrang. Select des objets depuis table référencée

Je crois qu'en fait j'ai mal cerné ton problème et que l'admin action était
pas vraiment une réponse correcte.

Sinon tu peux ajouter une nouvelle vue dédiée à ce que tu veux accomplir :

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-views-to-
admin-sites

Hors ligne

#5 13-05-2012 18:13:57

Christophe, Jean-Charles Narbonne
Membre
Inscription : 23-06-2011
Messages : 30

Re : DjangoAdmin Clé étrang. Select des objets depuis table référencée

Michael, est-ce qu'un même contact peut être utilisé par deux clients
différents?

Si oui, une ManyToMany avec filter_horizontal = ("contacts",) sur ta classe
admin des client devrait t'aller à ravir.

2012/5/11 David THENON <david.thenon _AT_ wanadoo.fr>

> Je crois qu'en fait j'ai mal cerné ton problème et que l'admin action était
> pas vraiment une réponse correcte.
>
> Sinon tu peux ajouter une nouvelle vue dédiée à ce que tu veux accomplir :
>
> https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-views-to-
> admin-sites<https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-views-to-%0Aadmin-sites>
>
> --
> Cordialement,
> David THENON.
>
> Le vendredi 11 mai 2012 16:37:47, MichaelP a écrit :
> > Merci de cette réponses.
> >
> >
> > Après une lecture rapide des «Admin actions», il me semble que
> > celles-ci permettemt des actions groupées sur les listes d'objets,
> > affichés dans l'admin.
> >
> > Cela répond à la moitié de mon problème. Avant d'écrire l'action, il
> > faut que, depuis la page modification d'un Client, j'affiche la liste
> > de tous les contacts dans un select multiple, en presélectionnant ceux
> > qui pointent déjà vers mon Client.
> >
> >
> > Existe-t-il un moyen simple pour réaliser cette première partie? Ou
> > bien faut-il que je créé un formulaire et que je modifie le template
> > de l'admin?
> >
> >
> > Merci d'avance
> > _______________________________________________
> > django mailing list
> > django _AT_ lists.afpy.org
> > http://lists.afpy.org/mailman/listinfo/django
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

#6 14-05-2012 11:12:27

MichaelP
Membre
Inscription : 11-05-2012
Messages : 3

Re : DjangoAdmin Clé étrang. Select des objets depuis table référencée

> Michael, est-ce qu'un même contact peut être utilisé par deux clients
> différents?
>
> Si oui, une ManyToMany avec filter_horizontal = ("contacts",) sur ta classe
> admin des client devrait t'aller à ravir.

Non, un contact ne peut pas être partagé par deux clients.

Mais effectivement, si c'était le cas, l'affichage du formulaire résultant
serait exactement ce que je souhaite avoir.

À la limite, il faudrait que je "trompe" l'admin pour lui faire croire qu'il
s'agit d'une relation ManyToMany, pour qu'il affiche le formulaire tel
que je le souhaite.

Ensuite il faudrait aussi modifier l'action pour insérer les données
dans la table contact et non dans la table de liaison...

Hors ligne

  • Accueil
  • » Django-fr
  • » DjangoAdmin Clé étrang. Select des objets depuis table référencée

Pied de page des forums