def get_form(self, request, obj=None, **kwargs): """ Returns a Form class for use in the admin add view. This is used by add_view and change_view. UPDATE: use multilingual_modelform_factory """ if self.declared_fieldsets: fields = flatten_fieldsets(self.declared_fieldsets) else: fields = None if self.exclude is None: exclude = [] else: exclude = list(self.exclude) exclude.extend(kwargs.get("exclude", [])) exclude.extend(self.get_readonly_fields(request, obj)) # if exclude is an empty list we pass None to be consistant with the # default on modelform_factory exclude = exclude or None defaults = { "form": self.form, "fields": fields, "exclude": exclude, "formfield_callback": curry(self.formfield_for_dbfield, request=request), } defaults.update(kwargs) return multilingual_modelform_factory(self.model, **defaults)
def get_changelist_form(self, request, **kwargs): """ Returns a Form class for use in the Formset on the changelist page. UPDATE: use multilingual_modelform_factory """ defaults = {"formfield_callback": curry(self.formfield_for_dbfield, request=request)} defaults.update(kwargs) return multilingual_modelform_factory(self.model, **defaults)
def multilingual_modelformset_factory(model, form=MultilingualModelForm, formfield_callback=None, formset=BaseModelFormSet, extra=1, can_delete=False, can_order=False, max_num=None, fields=None, exclude=None): """ Returns a FormSet class for the given Django model class. """ form = multilingual_modelform_factory(model, form=form, fields=fields, exclude=exclude, formfield_callback=formfield_callback) FormSet = formset_factory(form, formset, extra=extra, max_num=max_num, can_order=can_order, can_delete=can_delete) FormSet.model = model return FormSet