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