예제 #1
0
	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)
예제 #2
0
    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)
예제 #3
0
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