Как вы можете ограничить максимальное количество тегов, которые может иметь объект в 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,

Другие вопросы по тегам