这是我在我的小项目在合适的时候使用.Count之间的()在Django ORM
class Tag(models.Model):
name = models.CharField(max_length=200)
class Post(models.Model):
content = models.CharField(max_length=200)
tags = models.ManyToManyField(Tag)
location = models.PointField(null=True, blank=True)
标签列表是给我(最多3个)的车型。我需要找到每个这些标签在Post上出现的次数标签。让说[“搞笑”,“怪才”,“高科技”]
为了得到标记计数我做
for tag in tags:
tag_data[tag] = Post.objects.filter(
tags__name=tag,
location__distance_lte=(
pnt, D(km=distance))).count()
然后我使用下面的查询获取所有的POST数据。
posts = Post.objects.filter(
tags__name__in=tags,
location__distance_lte=(pnt, D(km=distance)))
我已经在函数结尾的帖子上循环。
for post in posts:
#some logic
所以我知道我有那里的标签数据。不需要像上面那样进行单独的数据查询来查找计数。但我想通了,如果我想找到for循环内的标签数,我需要1个循环内循环。
for post in posts:
#some logic
for tag in post.tags:
#some logic
所以我的问题哪一个更有效率在这里。使用.count()像我一样进行抓取或嵌套循环。
什么是'tag_data [em_id]''中的em_id'? –
这是一个错字。更新 –
据我所知,你要计算已在特定“Post”中标记的“标签”的数量。正确?或者你想要统计已经使用了多少'Post'标签?你想要计算的是什么? –