问题描述
class PostTag(TaggedItemBase):
content_object = ParentalKey(
'PostPage',related_name='tagged_items',on_delete=models.CASCADE
)
class PostPage(Page):
...
tags = ClusterTaggableManager(through=PostTag,blank=True)
...
content_panels = Page.content_panels + [
...
FieldPanel('tags')
]
当我想在 wagtail admin 上编辑 tags
字段时,它不仅会建议页面标签,还会建议图片标签。我想知道如何从建议中删除图片标签。
要了解场景,请看这两张图:
这可能吗?如果没有,是否可以从 wagtail 图像模型中删除 tags
字段?
解决方法
您可以通过设置从 taggit.models.TagBase
扩展的 a custom Tag model 来实现。然后将其作为与用于图像和文档的默认标签模型不同的模型进行处理。
from django.db import models
from modelcluster.contrib.taggit import ClusterTaggableManager
from modelcluster.fields import ParentalKey
from taggit.models import TagBase,ItemBase
class PostTag(TagBase):
class Meta:
verbose_name = "post tag"
verbose_name_plural = "post tags"
class TaggedPost(ItemBase):
tag = models.ForeignKey(
PostTag,related_name="tagged_posts",on_delete=models.CASCADE
)
content_object = ParentalKey(
to='myapp.PostPage',on_delete=models.CASCADE,related_name='tagged_items'
)
class PostPage(Page):
...
tags = ClusterTaggableManager(through=TaggedPost,blank=True)
在本例中,PostTag 是自定义标签模型,TaggedPost 是将标签与帖子相关联的链接表(相当于代码中的 PostTag)。