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

Python Django,在对象循环中获取相关对象,python,django,django-models,django-queryset,Python,Django,Django Models,Django Queryset,假设用户可以列出类型。当他们添加到类型列表中时,将创建一个新的UserType对象,其中用户和类型为ForeignKeys 其他用户可以“喜欢”用户列出的单个类型(UserTypes) 假设我查询一个用户的UserTypes,我如何才能最好地获得要在模板中使用的查询集中每个UserType上的UserLikes?我是否可以简单地循环,查询每一个,并将结果作为一个单独的列表返回?那看起来很乱 class Type(model.Models): name = models.CharField

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

其他用户可以“喜欢”用户列出的单个类型(
UserTypes

假设我查询一个用户的
UserTypes
,我如何才能最好地获得要在模板中使用的查询集中每个
UserType
上的
UserLikes
?我是否可以简单地循环,查询每一个,并将结果作为一个单独的列表返回?那看起来很乱

class Type(model.Models):
    name = models.CharField(max_length=100, blank=False)
    description = models.TextField(max_length=1000, blank=True)
    created_by = models.ForeignKey(User, blank=True, null=True, unique=False)


class UserType(model.Models):
    user = models.ForeignKey(User, unique=False)
    type = models.ForeignKey(Type, unique=False)
    is_active = models.BooleanField(default=True)


class UserLike(model.Models):
    user = models.ForeignKey(User, unique=False)
    user_type = models.ForeignKey(UserType, unique=False)

对UserType实例的UserLike集进行简单计数如何:

some_user_type = UserType.objects.get(user_id=some_user_pk)
like_count = some_user_type.userlike_set.all().count()
或者,如果查询集中有一组用户类型,则可以使用
注释

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

现在queryset中的每个结果都有一个计数:
qs[0]。userlike\uu计数

对UserType实例的userlike集合进行简单计数如何:

some_user_type = UserType.objects.get(user_id=some_user_pk)
like_count = some_user_type.userlike_set.all().count()
或者,如果查询集中有一组用户类型,则可以使用
注释

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

现在queryset中的每个结果都有一个计数:
qs[0]。userlike\uu count

这将返回一个属于该用户的用户类型,并对其进行计数。我正试图让所有的用户喜欢给定一个用户类型的查询集,以便在我的模板中使用。好的,我想你应该对查询集进行注释…我编辑了我的回答哇,不知道这个存在。看看几个例子,我甚至对它的工作原理感到困惑,非常惊讶。这将返回一个属于该用户的用户类型,并计算喜欢它的用户。我正试图让所有的用户喜欢给定一个用户类型的查询集,以便在我的模板中使用。好的,我想你应该对查询集进行注释…我编辑了我的回答哇,不知道这个存在。看看几个例子,我甚至对它的工作原理感到困惑,非常惊讶。