gpt4 book ai didi

python - 减少 django 项目的 QuerySet 数量

转载 作者:太空宇宙 更新时间:2023-11-03 17:09:12 25 4
gpt4 key购买 nike

我正在制作一个实体评论投票系统,其中每个实体都会有一些评论,每个评论都会有一些投票(向上/向下)

class Entity(models.Model):
name = models.CharField()
...

class Review(models.Model):
author = models.ForeignKey(user)
entity = models.ForeignKey(Entity)
....

class Vote(models.Model):
vote_user = models.ForeignKey(user)
vote_review = models.ForeignKey(Review)
vote_value = models.BooleanField() # True = Up

对于每个实体,我想要一个评论列表,并标注每个评论的赞成票数和反对票数。

到目前为止,我的方法是为每个评论运行 2 个额外查询:

count_up = Vote.objects.filter(vote_review__id = X, vote_value = True)
count_down = Vote.objects.filter(vote_review__id = X, vote_value = False)

这将返回正确的结果。然而,查询的数量似乎相当低效。

我可以知道是否有更好的方法来构造查询?或者如何改变schema来更好地支持这种操作?

谢谢

最佳答案

如果您想要的只是计数,那么您应该使用 count

Returns an integer representing the number of objects in the database matching the QuerySet. The count() method never raises exceptions.

count_up = Vote.objects.filter(vote_review__id = X, vote_value = True).Count()
count_down = Vote.objects.filter(vote_review__id = X, vote_value = False).Count()

这会将查询修改为仅返回查询创建的对象数量,并阻止它花费时间返回模型。

关于python - 减少 django 项目的 QuerySet 数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34287137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com