Hi ALL!
If I use ModelForm + FormPreview + form.save() call in done() it never
update objects if PK is AutoField, but always create them, why it can
be so? FormPreview doesn't store PK value enywhere (ex.: to use in
form.instance.pk to determine that it is an update not create) ?
I redefine some FormPreview default methods preview_get() to pass form
instance to the template, post_post() to pass form instance to the
done() method, not just cleaned_data.
if preview:
from django.contrib.formtools.preview import FormPreview,
AUTO_ID
class ModelFormPreviewClass(FormPreview):
def preview_get(self, request):
"""Displays the form"""
f = self.form(auto_id=AUTO_ID, instance=object)
return render_to_response(self.form_template, {'form':
f, 'stage_field': self. unused_name('stage'), 'state':
self.state}, context_instance=RequestContext(request))
def post_post(self, request):
"""Validates the POST data. If valid, calls done().
Else, redisplays form."""
f = self.form(request.POST, auto_id=AUTO_ID)
if f.is_valid():
if self.security_hash(request, f) !=
request.POST.get(self.unused_name('hash')):
return self.failed_hash(request) # Security
hash failed.
return self.done(request, f)
else:
return render_to_response(self.form_template,
{'form': f, 'stage_field': self. unused_name('stage'),
'state': self.state}, context_instance=RequestContext(request))
def done(self, request, form):
new_object = form.save()
response = model_post_save(new_object)
return response
return ModelFormPreviewClass(model_form)(request)
if request.method == 'POST':
new_data = request.POST.copy()
form = model_form(new_data, instance=object)
if form.is_valid():
new_object = form.save()
response = model_post_save(new_object)
return response
else:
form = model_form(instance=object)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---