IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

POSTer des données dans l'admin depuis une vue


Sujet :

Django Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut POSTer des données dans l'admin depuis une vue
    Bonjour,

    Je développe une application Django dont les données vont provenir de diverses sources, dont des fichiers Excel. Ces fichiers évoluent au cours du temps et j'aimerais permettre aux utilisateurs d'intégrer facilement les nouvelles données dans l'appli django au fur et à mesure sans avoir à les re-taper.

    J'imagine donc faire un formulaire avec un champ texte où l'utilisateur pourrait copier-coller une ligne de son tableur. Récupérée par une vue, cette ligne serait splittée, pré-traitée, et "injectée" dans le formulaire admin de création/modification de l'objet correspondant.

    Idéalement, j'aimerais que tout se passe comme si l'utilisateur avait lui-même entré les données dans le formulaire: si tout est correct, l'objet est créé/modifié et sinon le formulaire s'affiche avec le signalement des erreurs.

    Seulement voilà... je ne crois pas qu'on puisse faire un POST depuis le code d'une vue, et je ne vois pas comment obtenir ce comportement d'une autre manière.

    Une idée?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Points : 85
    Points
    85
    Par défaut
    Salut,
    tu peux créer un formulaire à partir d’un modèle.

    Informe-toi d’abord sur les formulaires, puis sur les formulaires de modèle.
    Dans ta vue, tu pourras utiliser ton formulaire et le traitement sera aisé puisqu’il est basé sur un modèle.

    À plus !
    Le propriétaire est éphémère, le libre est éternel.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Antoyo,

    Merci pour ta réponse.

    Je vois comment un ModelForm me permettra de générer un formulaire automatiquement depuis mon modèle, mais je n'arrive pas à voir comment cela résout mon problème.

    Je veux avoir d'abord un formulaire avec un seul champ texte (facile), traiter ce texte (je sais faire) et ensuite remplir automatiquement un ModelForm (ou, mieux, celui de l'admin) avec les données résultant de ce traitement.

    C'est l'étape "remplir automatiquement" qui m'inquiète. Je pourrais essayer de passer ça en GET avec un query string, mais d'une part j'ai beaucoup d'info à passer, y compris des champs multi-lignes, donc j'ai peur d'obtenir une URL trop longue. D'autre part j'ai des champs ManyToMany et des OneToMany en Inline que je ne sais pas comment traiter de cette manière.

    Si ta réponse apportait une solution à ce problème, je ne l'ai pas comprise...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Points : 85
    Points
    85
    Par défaut
    Désolé, j’avais mal lu…

    Tu n’as pas besoin d’un ModelForm, seulement d’un Form et d’un Model.

    Pour ton problème, je ne comprends pas trop ce que tu veux dire par remplir automatiquement.

    D’après ce que je comprends, tu devrais ajouter un validateur à ton formulaire qui vérifie ce que l’utilisateur a entré pour l’afficher de nouveau s’il n’a pas entré correctement les données.

    Si c’est valide, tu ajoute une ligne dans la bdd avec le modèle.

    Si ce n’est pas ça, il me faudrait plus d’explications pour pouvoir t’aider.

    À plus !
    Le propriétaire est éphémère, le libre est éternel.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Essayons comme ça: J'ai une nouvelle ligne dans mon tableur de données. Je fais un copier-coller de cette ligne que j'envoie à ma secrétaire en lui demandant de recopier, champ après champ, ces données dans un formulaire admin de Django, avec quelques adaptations mineures et assez automatiques.
    Quand elle a fini, elle m'appelle et je viens voir si les données valident.

    Ça marche bien, mais ma secrétaire est en vacances, donc j'aimerais pouvoir directement copier-coller ma ligne dans un formulaire et d'une manière ou d'une autre me retrouver avec le formulaire admin rempli pour moi, que je n'ai plus qu'à corriger s'il ne valide pas.

    Techniquement, j'aurais aimé faire un redirect vers http://.../admin/app/object/add mais avec la méthode POST plutôt que GET. Mais il semble que cela n'existe pas.

    Est-ce que je suis plus clair?

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Suite à une suggestion reçue sur stackoverflow (http://stackoverflow.com/questions/4...671609#4671609), j'ai un peu modifié mon approche: plutôt que d'utiliser le formulaire de l'admin, je poste vers un ModelForm, ce qui me permet de récupérer une bonne partie des fonctionnalités d'un formulaire admin tout en gardant le contrôle sur ce qui se passe. Je peux ainsi stocker les données pré-traitées dans la session et les utiliser pour pré-remplir mon ModelForm.

    Il reste encore un peu de travail - en particulier pour traiter les champs one-to-many (avec des formsets?) - mais le concept semble fonctionner.

    Merci pour votre aide!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/04/2012, 10h17
  2. Sauvegarder des données dans un fichier depuis une Base de Données
    Par ankou2005 dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 0
    Dernier message: 14/02/2011, 18h51
  3. Réponses: 4
    Dernier message: 14/01/2008, 00h15
  4. Effacer des données dans un formulaire après une recherche
    Par PFX dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 09/01/2008, 11h00
  5. Réponses: 9
    Dernier message: 04/04/2007, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo