1

django-taggit 作为在 Django 中处理标签的应用程序的实现给我留下了深刻的印象。但是,我一直无法找到一种方法来设置可以应用于对象的最大标签数量 - 如果您愿意,可以使用“MAX_TAG”。这可能吗?例如,我想将我的应用程序限制为每个对象只有 5 个标签。

谢谢,

Ĵ

4

2 回答 2

5

我已经在管理模型中解决了这个问题:

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
于 2011-09-12T09:27:12.173 回答
1

TaggableManager 使用一个内部_TaggableManager,它有一个add您需要更改的方法。

首先,您需要扩展_TaggableManager和更改add方法以检查正在使用的标签数量,并相应地修改标签列表。

然后您必须扩展TaggableMananger和覆盖__get__,以便它使用您的自定义_TaggableManager.

于 2011-07-04T17:32:53.937 回答