Django 内でタグを処理するためのアプリケーションとしての django-taggit の実装には、本当に感銘を受けました。ただし、オブジェクトに適用できるタグの最大数を設定する方法を見つけることができませんでした。これは可能ですか?たとえば、オブジェクトごとに 5 つのタグのみにアプリケーションを制限したいと考えています。
ありがとう、
J
Django 内でタグを処理するためのアプリケーションとしての django-taggit の実装には、本当に感銘を受けました。ただし、オブジェクトに適用できるタグの最大数を設定する方法を見つけることができませんでした。これは可能ですか?たとえば、オブジェクトごとに 5 つのタグのみにアプリケーションを制限したいと考えています。
ありがとう、
J
私は管理者モデルでこれを解決しました:
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 は、変更が必要なメソッドを持つ内部_TaggableManageradd
を使用します。
まず、メソッドを拡張_TaggableManager
および変更して、add
使用されているタグの数を確認し、それに応じてタグのリストを変更する必要があります。
次に、カスタムを使用するように拡張TaggableMananger
およびオーバーライドする必要があります。__get__
_TaggableManager