Как сделать валидацию полей для TabularInline в админке django?
Я создаю BaseInlineFormSet следующим образом:
class ProductPictureRequiredFormSet(forms.models.BaseInlineFormSet):
def clean(self):
if self.cleaned_data["image"] == None:
raise ValidationError("error")
return self.cleaned_data["image"]
и используем этот набор форм в моем классе TabularInline:
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
но я получил эту ошибку:
BaseFormSet.__init__() got an unexpected keyword argument 'default_order_direction'
У меня такая же проблема,
изменил forms.models.BaseInlineFormSet
на adminsortable2.admin.CustomInlineFormSet
.
Поскольку SortableTabularInline
наследуется от SortableInlineAdminMixin
class SortableTabularInline(SortableInlineAdminMixin, admin.TabularInline):
template = 'adminsortable2/edit_inline/tabular-django-{0}.{1}.html'.format(*DJANGO_VERSION)
который использует CustomInlineFormSet
в качестве набора форм
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__
попробуйте изменить на
class ProductPictureRequiredFormSet(adminsortable2.admin.CustomInlineFormSet):
def clean(self):
if self.cleaned_data["image"] == None:
raise ValidationError("error")
return self.cleaned_data["image"]
и это может решить проблему.