【问题标题】:How to seperate wagtail image's tags from page's tags?如何将鹡鸰图像标签与页面标签分开?
【发布时间】:2021-02-14 21:54:20
【问题描述】:

假设我们有一个这样定义的 wagtail 页面:

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 管理员上编辑 tags 字段时,它不仅建议页面的标签,还建议图像的标签。我想了解如何从建议中删除图片的标签。

在我的项目中,页面的标签与图片的标签无关。

要了解场景,请看这两张图片:

  • 第一个显示将river 作为标签添加到其中一个图像中。
  • 第二个显示PostPage 上的tags 字段。

我不希望看到 river 标签作为页面标签上的建议:

这可能吗?如果没有,是否可以从 wagtail 图像模型中删除 tags 字段?

【问题讨论】:

    标签: django wagtail django-taggit


    【解决方案1】:

    您可以通过设置从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)。

    【讨论】:

      猜你喜欢
      • 2014-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      相关资源
      最近更新 更多