鑑於這些機型:Django的總量,除以場沒有相關的名稱
class User(models.Model):
pass
class Reward(models.Model):
user = models.ForeignKey(User, related_name='+')
我想獲得一個包含類似一個QuerySet:
| user | reward__count |
| 1 | 103 |
| 2 | 50 |
| 3 | 67 |
Conventional wisdom建議的查詢看起來像
User.objects\
.annotate(reward__count=Count('reward_set'))\
.values_list('user', 'reward__count')
不幸的是,因爲相關的名字是+
,ne ither reward_set
或rewards
(如果我可以命名它)將作爲Count()
的有效參數。鑑於這種情況,除了python for循環來獲取所需的QuerySet真的沒有辦法嗎?
for user in User.objects.all():
user_rewards = Reward.objects.filter(user=user).count()
# Store (user.pk, user_rewards) somewhere.
那麼,爲什麼你不讓它設置一個相關的名字呢? –
@DanielRoseman如果他們是圖書館的一部分(而不是你在github上發現的髖關節類型,但是沒有人敢觸及的半內部類型),你會怎麼做? – Brian