我对django-taggit作为处理Django中的标签的应用程序的实现印象非常深刻。但是,我一直无法找到一种方法来设置可应用于对象的最大标签数 - 如果愿意,则为“MAX_TAG”。这可能吗?我想限制我的应用程序,例如,每个对象只有5个标签。
谢谢,
Ĵ
答案 0 :(得分: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
答案 1 :(得分:1)
TaggableManager使用的内部_TaggableManager具有您需要更改的add
方法。
首先,您需要扩展_TaggableManager
并更改add
方法以检查正在使用的标记数量,并相应地修改标记列表。
然后,您必须延长TaggableMananger
并覆盖__get__
,以便它使用您的自定义_TaggableManager
。