Il y a plusieurs questions à propos de plus ou moins le même problème dans stackoverflow, mais aucun d'entre eux ne semble couvrir les problèmes que je peux prévoir. Étant donné que mes connaissances de django sont limitées, je risque de réagir de façon excessive ... alorsPlusieurs formulaires django publiés à partir de la même page, en ligne et en ajoutant/supprimant ces inlines
Ce que je veux accomplir, avec django, est d'éditer 2 modèles, List et ListItem dans la même vue. Liste comme forme commune et listitem comme inlineformset. Créer ces deux formes n'est pas un problème. Les transmettre dans une vue> template n'est pas un problème non plus.
Ce que je suis inquiet est,
1) Comment les envoyer à même adresse et gérer cette demande de poste.
2) Comment configurer l'ajout/la suppression des ListItems en ligne de ce formset avec javascript. 2.1) si j'envoie une requête ajax à une adresse pour supprimer l'objet ListItem et ensuite utiliser javascript pour supprimer cette partie du formulaire. Comment la partie de vue django va-t-elle savoir, quel objet supprimer de la base de données? Ai-je besoin de passer l'ID de l'objet au modèle, pour que je puisse le renvoyer à l'affichage avec ajax? 2.2) Si tout le jeu de formulaires ListItem inline modifié est posté après avoir supprimé/ajouté des lignes, alors cela ne causera pas de problèmes, car le dictionnaire des objets qui a été utilisé initialement a été modifié entre les deux?
3) d'autres pièges que quelqu'un pourrait voir?
Btw je ne veux pas d'exemples de code. Si vous le pouvez, expliquez simplement comment les choses fonctionnent et ce que je devrais faire et garder à l'esprit. Si vous connaissez des exemples à jour, alors je pourrais aussi utiliser des liens.
Modifier (et réponse à mes questions): Je l'ai essayé et voici ce que je trouve: 1) Il suffit de les pos ... en vue, vous pouvez le faire comme ceci:
form = ListForm(request.POST, instance=l)
formset = ShoppingListFormSet(request.POST, instance=l)
Et puis faites tout ce qui est nécessaire - très simple et facile.
2) Dupliquer une ligne/un formulaire existant ou en supprimer un. Tout ce que vous devez garder à l'esprit, c'est que les noms des éléments sont corrects et que tout ce que formset charge avec {{form.management_form}} contient des informations à jour et correctes sur le nombre de formulaires. Tous les noms de champs doivent également être à jour. Si vous supprimez le formulaire entre les formulaires 1 et 3, les numéros de formulaire 3 doivent être remplacés par 2 et ainsi de suite.
2.1) id élément peut être extrait de {{}} form.initial.id puis utilisé sous forme
2.2) Non si les informations form.management_form est correct et si les noms de champs sont à jour (voir 2.)
3) Il suffit de créer des vues, de sorte que votre site ne sera pas ruiné par la demande de faux cross site (voir http://docs.djangoproject.com/en/dev/ref/contrib/csrf/)
Alan.
Je vous suggère de rechercher REST http://en.wikipedia.org/wiki/Representational_State_Transfer. – geowa4
J'ai parcouru ce texte et je dois admettre que je ne comprends pas comment cela répondrait à ma question. Peut-être que je ne suis pas intéressé par la programmation et je ne vise pas à devenir un programmeur. Je veux juste apprendre assez de python/django pour atteindre mes objectifs actuels. Il pourrait y avoir quelque chose d'utile pour moi dans ce post, mais maintenant je ne comprends pas ce que vous pensiez que je devais apprendre à partir de là? –