Vous n'êtes pas identifié(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
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
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
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
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
> 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