def get_default_form_data(form):
"""
Given an unbound form, determine what data would
be generated from POSTing the form unchanged.
"""
def value_from_widget(initial_value, widget):
value = initial_value
if value != '':
if hasattr(widget, '_format_value'):
value = widget._format_value(value)
value = force_unicode(value)
return value
data = {}
for name, field in form.fields.items():
if isinstance(field.widget, forms.MultiWidget):
value = field.widget.decompress(form.initial[name])
for i, widget in enumerate(field.widget.widgets):
try:
widget_value = value[i]
except IndexError:
widget_value = None
data['%s_%s' % (name, i)] = value_from_widget(widget_value, widget)
else:
data[name] = value_from_widget(form.initial[name], field.widget)
if form.prefix:
return dict([('%s-%s' % (form.prefix, k), v) for k,v in data.items()])
else:
return data
Comments