【问题标题】:Wagtail tags. Get tags as queryset鹡鸰标签。获取标签作为查询集
【发布时间】:2020-08-19 15:03:38
【问题描述】:

我正在尝试将标签作为查询集进行循环并获取另一个具有相同标签的 BlogPost,但我得到了

def get_related_content(self):
    related_content = []
    if self.tags:
        for tag in self.tags:
            related_content += BlogDetailPage.objects.live().filter(tags__name=tag)
            related_content += OfferDescription.objects.live().filter(tags__name=tag)
    else:
        return related_content

我收到此错误:

'_ClusterTaggableManager' 对象不可迭代

我也尝试过使用django-taggit get_query_set()的方法,但是不行,好像没有包含在wagtail中。

def get_related_content(self):
    related_content = []
    if self.tags:
        for tag in self.tags.get_query_set():
            related_content += BlogDetailPage.objects.live().filter(tags__name=tag)
            related_content += OfferDescription.objects.live().filter(tags__name=tag)
    else:
        return related_content

'_ClusterTaggableManager' object has no attribute 'get_query_set'

如何遍历所有self.tags 并获取使用类似标签的其他页面模型?

我的模特:

class OfferDescriptionPageTag(TaggedItemBase):
    content_object = ParentalKey('OfferDescription', on_delete=models.CASCADE, related_name='tagged_items')

class OfferDescription(Page):

    tags = ClusterTaggableManager(through=OfferDescriptionPageTag, blank=True)

【问题讨论】:

    标签: wagtail


    【解决方案1】:

    在您的第一个示例中,尝试for tag in self.tags.all():

    你的if self.tags 行没有帮助,因为标签关系是一个经理,而不是一个查询集,并且总是会评估为True。你可以测试if self.tags.exists()

    在您的第二个代码示例中,方法应为.get_queryset()。见https://github.com/wagtail/django-modelcluster/blob/master/modelcluster/contrib/taggit.py#L26

    【讨论】:

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