J'ai une page d'édition pour mon objet. Comme j'ai divisé les données en deux onglets, j'utilise jquery-ui. Sur le premier onglet (#core_data
), je charge les données principales de l'objet. La forme est submited via Ajax:Demandes POST doublées au lieu d'une simple
<form method="post" class="object_form" id="event-core-form" action="{% url edit_event_data event.id %}" enctype="multipart/form-data">
{{ form.as_p }}
<p>
<input class="object-submit" id="event-data-save" type="submit" value="Save data">
</p>
</form>
js:
$("#event-data-save").livequery("click", function() {
$("#event-core-form").ajaxSubmit({
"success": function(data) {
data = JSON.parse(data)
$("#core-data").html(data["form"]);
}
});
return false;
})
et une fonction est exécutée, et mon débogage dit qu'il est immédiatement appelé 2 fois:
def edit_event_data(request, event_id,):
template_name="management/core_event.html"
event = get_object_or_404(Event, pk=event_id)
form = EventForm(instance=event, data=request.POST)
if form.is_valid():
form.save()
form = EventForm(instance=event)
form_html = render_to_string(template_name, RequestContext(request, {
"event" : event,
"form" : form,
}))
result = simplejson.dumps({
"form": form_html,
"message": "Data saved."
}, cls=LazyEncoder)
return HttpResponse(result, mimetype='application/javascript')
Que, après avoir réussi à frapper en sauvant une fois de plus, il me donne une forme brute rendue:/Voici la forme que j'utilise. Je pense que cela peut être la raison de mes problèmes:
class EventForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
logging.debug("form - init")
super(EventForm, self).__init__(*args, **kwargs)
(...)
def save(self, *args, **kwargs):
(...)
logging.debug("form - save")
post = super(EventForm, self).save(*args, **kwargs)
post.save()
Depuis mon debug je peux voir, je pense que trop de __init__'s
2010-10-28 23:35:08,210 DEBUG form - init
2010-10-28 23:35:34,065 DEBUG form - init
2010-10-28 23:35:34,068 DEBUG form - save
2010-10-28 23:35:34,073 DEBUG form - init
2010-10-28 23:35:34,258 DEBUG form - init
2010-10-28 23:35:34,262 DEBUG form - save
2010-10-28 23:35:34,270 DEBUG form - init
Quelqu'un peut-il aider?
EDIT:
Après avoir retiré jquery-ui toujours le même. Supprimer LiveQuery ne donne également aucun résultat.
partiellement résolu. Il s'est avéré, j'ai eu l'importation en double avec la fonction d'envoi de données. Maintenant, le formulaire est envoyé une seule fois, mais après avoir renvoyé, je reçois un formulaire html brut. – owca