How to validation fields for TabularInline in django admin?
I create a BaseInlineFormSet like this:
class ProductPictureRequiredFormSet(forms.models.BaseInlineFormSet):
def clean(self):
if self.cleaned_data["image"] == None:
raise ValidationError("error")
return self.cleaned_data["image"]
and use this formset in my TabularInline class:
class ProductPictureAdminInline(SortableTabularInline):
formset = ProductPictureRequiredFormSet
fields = ("title", "image", "is_default", "order", "created_by", "created_at", "updated_at")
readonly_fields = ("created_by", "created_at", "updated_at")
model = ProductPicture
extra = 3
but i got this error:
BaseFormSet.__init__() got an unexpected keyword argument 'default_order_direction'
Had the same issue,
changed forms.models.BaseInlineFormSet
to adminsortable2.admin.CustomInlineFormSet
Since SortableTabularInline
inhertits from SortableInlineAdminMixin
class SortableTabularInline(SortableInlineAdminMixin, admin.TabularInline):
template = 'adminsortable2/edit_inline/tabular-django-{0}.{1}.html'.format(*DJANGO_VERSION)
which uses CustomInlineFormSet
as formset
class CustomInlineFormSet(CustomInlineFormSetMixin, BaseInlineFormSet):
pass
class SortableInlineAdminMixin:
formset = CustomInlineFormSet
def __init__(self, parent_model, admin_site):
if parent_model in admin_site._registry:
assert isinstance(admin_site._registry[parent_model], SortableAdminBase), \
"{} must inherit from SortableAdminBase since {} inherits from SortableInlineAdminMixin.".format(
admin_site._registry[parent_model], self.__class__.__name__
so try changing to
class ProductPictureRequiredFormSet(adminsortable2.admin.CustomInlineFormSet):
def clean(self):
if self.cleaned_data["image"] == None:
raise ValidationError("error")
return self.cleaned_data["image"]
and it might resolve the issue.