Skip to content

Instantly share code, notes, and snippets.

@daevaorn
Created May 26, 2010 10:32
Show Gist options
  • Save daevaorn/414325 to your computer and use it in GitHub Desktop.
Save daevaorn/414325 to your computer and use it in GitHub Desktop.
class FormsetWidget(forms.Widget):
def render(self, name, value, attrs):
if isinstance(value, self.formset):
formset = value
else:
formset = self.formset(initial=value, prefix=name)
return render_to_string(self.template, {'formset': formset})
def value_from_datadict(self, data, files, name):
formset = self.formset(data=data, prefix=name)
return formset
class FormsetField(forms.Field):
widget = FormsetWidget
def __init__(self, formset=formsets.BaseFormSet, form=forms.Form, extra=0,
template='admin/formset_widget.html', *args, **kwargs):
self.formset = formsets.formset_factory(form, formset=formset, extra=extra)
self.template = template
super(FormsetField, self).__init__(*args, **kwargs)
self.widget.formset = self.formset
self.widget.template = self.template
def clean(self, value):
# value -- объект формсета
if not value.is_valid():
raise forms.ValidationError(value.errors)
return value.cleaned_data
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment