我试图从django-taggit中检索上个月使用的标签以及使用的次数(也是上个月),以便创建标签云。出于审美原因,时间过滤器很重要。
查看django-taggit模型,它似乎不包含任何日期,因此我的方法是按日期过滤我的模型(链接),然后检索与过滤后的链接相关的所有标签。
# filter links submitted last month
last_month = datetime.today() - timedelta(days=30)
links_ids = Link.objects.filter(date__gte=last_month)
# retrieve TaggedItem objects related to those links
tagged_item = TaggedItem.objects.filter(object_id__in=links_ids)
# finally get Tag names related to TaggedItem
tag_ids = tagged_item.values_list('tag_id', flat=True) # get tags
tags = Tag.objects.filter(id__in=tag_ids).order_by('name')
# annotate by num_times
tags = tags.annotate(num_times=Count('taggit_taggeditem_items'))
return tags
通过这种方法,我只能过滤上个月使用的标签,但是随后要计算使用的num_times,它会调用整个“ taggit_taggeditem”表,因此它为我提供了所有时间使用的num_times,现在我可以仅上个月使用了num_times次?