python - Django, getting related objects in a loop of objects -
let's users can make list of types
. when add list of types, new usertype
object created user , type foreignkeys
.
other users can 'like' individual types user has listed (usertypes
).
given query user's usertypes
, how can best number of userlikes
on each usertype
in queryset use in template? loop through, query each , return result separate list? seems pretty messy.
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)
how simple count of userlike set usertype instance:
some_user_type = usertype.objects.get(user_id=some_user_pk) like_count = some_user_type.userlike_set.all().count()
or if have bunch of usertypes in queryset can use annotate
:
from django.db.models import count qs = usertype.objects.annotate(count('userlike'))
now each result in queryset has count: qs[0].userlike__count
Comments
Post a Comment