Python 寻找最流行的标签Taggit Tastypie Django 上下文
我一直有冲突。目前,我正在创建一个问答应用程序。每个问题都有一个标签,我想展示最流行的标签(例如,与之关联的问题最多的标签) 细节 我正在使用django taggit的Python 寻找最流行的标签Taggit Tastypie Django 上下文,python,django,tastypie,django-taggit,Python,Django,Tastypie,Django Taggit,我一直有冲突。目前,我正在创建一个问答应用程序。每个问题都有一个标签,我想展示最流行的标签(例如,与之关联的问题最多的标签) 细节 我正在使用django taggit的TaggableManager来实现这一点。以下是问题的模型定义: class Question(models.Model): tags = TaggableManager() date = models.DateTimeField(default=timezone.now) text = models.
TaggableManager
来实现这一点。以下是问题的模型定义
:
class Question(models.Model):
tags = TaggableManager()
date = models.DateTimeField(default=timezone.now)
text = models.TextField(null=True)
现在我把几个标签贴在了问题上
问题:
我如何制作一个tastypie资源来显示标签,并按照与标签相关的问题最多的标签对标签进行排序
我的尝试
我真的只有一次相当成功的尝试来实现这一目标。以下是tastypie资源:
class TagResource_min(ModelResource):
def dehydrate(self, bundle):
bundle.data['total_questions'] len(Question.objects.filter(tags__slug=bundle.obj.slug))
return bundle
class Meta:
queryset=Tag.objects.all()
返回一个漂亮的JSON,其中包含一个名为total_questions
的变量,该变量包含与之相关的问题数。虽然脱水是在指定的请求周期的sort\u
部分之后,所以我不能按照total\u问题对资源进行排序。以下是JSON:
{
"meta": {
"limit": 20,
"next": null,
"offset": 0,
"previous": null,
"total_count": 13
},
"objects": [
{
"id": 1,
"name": "testing tag",
"resource_uri": "/full/tag/1/",
"slug": "testing-tag",
"total_questions": 2
},
...]
}
另一次尝试,我尝试了另一种方式,试图使查询集
由问题
模型形成:
queryset=Question.objects.filter(~Q(tags__slug=None)).values('tags', 'tags__slug').annotate(total_questions=Count(Tag))
问题是,filter
函数将结果转换为dict
类型,而不是models.Model
类型。关键区别在于models.Model
具有属性pk
,这是一种标识类型,而dict
没有该属性
任何贡献都是值得赞赏的!谢谢大家! 似乎很难计算所有标签的数量,如果有人有任何其他方法来计算标签的数量,而不是使用taggit
,我很想听听或看看参考资料。你找到解决方案了吗?我也在寻找同样的方法。似乎很难计算所有标签的数量,如果有人有其他方法计算标签的数量,而不是使用taggit
,我很想听到或看到参考。你找到解决方案了吗?我也在找同样的。