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