gpt4 book ai didi

django: select_related 与 entry_set

转载 作者:行者123 更新时间:2023-12-04 23:34:06 27 4
gpt4 key购买 nike

entry_set 是否应该与 select_related 一起缓存?即使在我使用 select_related 之后,我的数据库仍然接到电话。相关部分

class Alias(models.Model):
achievements = models.ManyToManyField('Achievement', through='Achiever')

def points(self) :
points = 0
for a in self.achiever_set.all() :
points += a.achievement.points * a.count
return points

class Achievement(models.Model):
name = models.CharField(max_length=100)
points = models.IntegerField(default=1)

class Achiever(models.Model):
achievement = models.ForeignKey(Achievement)
alias = models.ForeignKey(Alias)
count = models.IntegerField(default=1)

aliases = Alias.objects.all().select_related()
for alias in aliases :
print "points : %s" % alias.points()
for a in alias.achiever_set.all()[:5] :
print "%s x %d" % (a.achievement.name, a.count)

我在开始时看到一个很大的连接查询,然后是对每个成就的单独调用。用于点和名称查找。

这是一个错误,还是我做错了什么?

最佳答案

使用 Django 1.4,您可以使用 prefetch_related ,它适用于多对多关系:

https://docs.djangoproject.com/en/dev/ref/models/querysets/#prefetch-related

关于django: select_related 与 entry_set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056860/

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