Как вы можете ограничить максимальное количество тегов, которые может иметь объект в django-taggit?
Я был очень впечатлен реализацией django-taggit как приложения для обработки тегов в Django. Однако мне не удалось найти способ установить максимальное количество тегов, которые могут быть применены к объекту - "MAX_TAG", если хотите. Это возможно? Я хотел бы ограничить свое приложение, например, только 5 тегами на объект.
Спасибо,
J
2 ответа
Я решил это в модели администратора:
class MyObjectAdminForm(forms.ModelForm):
class Meta:
model = MyModel
def clean_tags(self):
tags = self.cleaned_data['tags']
if len(tags) > 3:
raise ValidationError("....")
return tags
class MyObjectAdmin(admin.ModelAdmin):
form = MyObjectAdminForm
TaggableManager использует внутренний _TaggableManager, который имеет add
метод, который вам нужно изменить.
Во-первых, вам нужно продлить _TaggableManager
и изменить add
метод, чтобы проверить, сколько тегов используется, и соответствующим образом изменить список тегов.
Тогда вам придется продлить TaggableMananger
и переопределить __get__
так что он использует ваш обычай _TaggableManager
,