Как вы можете ограничить максимальное количество тегов, которые может иметь объект в django-taggit? - PullRequest
1 голос
/ 04 июля 2011

Я был очень впечатлен реализацией django-taggit как приложения для обработки тегов в Django.Однако мне не удалось найти способ установить максимальное количество тегов, которые можно применить к объекту - «MAX_TAG», если хотите.Это возможно?Я хотел бы ограничить свое приложение, например, только 5 тегами на объект.

Спасибо,

J

Ответы [ 2 ]

5 голосов
/ 12 сентября 2011

Я решил это в модели администратора:

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
1 голос
/ 04 июля 2011

TaggableManager использует внутренний _TaggableManager , который имеет add метод, который вам нужно изменить.

Во-первых, вам нужно расширить _TaggableManager и изменить метод add, чтобы проверить, сколько тегов используется, и соответствующим образом изменить список тегов.

Тогда вам придется расширить TaggableMananger и переопределить __get__, чтобы он использовал ваш пользовательский _TaggableManager.

...