1

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

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

鉴于我查询用户的UserTypes,我怎样才能最好地获取QuerySet 中UserLikes每个的数量以在模板中使用?UserType我会简单地遍历,查询每个并将结果作为单独的列表返回吗?这似乎很混乱。

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)
4

1 回答 1

1

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

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

或者,如果您在查询集中有一堆用户类型,您可以使用annotate

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

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

于 2013-08-16T02:30:56.163 回答