假设用户可以列出Types。当他们添加到其类型列表中时,将创建一个新的UserType对象,该用户的类型为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)

最佳答案

如何简单计算UserType实例的UserLike集:

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


或者,如果您在查询集中有很多UserType,则可以使用annotate

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


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

关于python - Django,在对象循环中获取相关对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18264851/

10-12 05:30