Django,在对象循环中获取相关对象

时间:2013-08-16 02:22:29

标签: python django django-models django-queryset

假设用户可以列出Types。当他们添加到他们的类型列表时,会创建一个新的UserType对象,其中User和Type为ForeignKeys

其他用户可以“喜欢”用户列出的各种类型(UserTypes)。

鉴于我在查询用户的UserTypes,我如何才能最好地获取QuerySet中每个UserLikes的{​​{1}}个数,以便在模板中使用?我会简单地遍历,查询每个并将结果作为单独的列表返回吗?这看起来很混乱。

UserType

1 个答案:

答案 0 :(得分:1)

如何为UserType实例设置UserLike的简单计数:

some_user_type = UserType.objects.get(user_id=some_user_pk)
like_count = some_user_type.userlike_set.all().count()

或者如果您在查询集中有一堆UserTypes,则可以使用annotate

from django.db.models import Count
qs = UserType.objects.annotate(Count('userlike'))

现在查询集中的每个结果都有计数:qs[0].userlike__count