#python #django #model
#python #django #Модель
Вопрос:
Это Blog
модель, как мне получить общее количество likes
из общих объектов блога?
class Blog(models.Model):
title = models.CharField(max_length=160)
...
likes = models.ManyToManyField(
User, related_name='likes', blank=True, default=None)
В шаблоне, который я могу использовать user.likes.count
, и он вернет общее количество лайков для одного пользователя, но как мне получить общее количество лайков от всех пользователей.
Спасибо
Комментарии:
1. Для данного
Blog
объекта или всех лайков (так что для всехUser
s для всехBlog
s)?2. все пользователи для всех блогов (количество лайков)
Ответ №1:
Вы можете получить доступ к «сквозной» модели между Blog
и User
и подсчитать количество объектов этой сквозной модели с помощью:
Blog.likes.through.objects.count()
Вот Blog
Blog
класс, а не отдельный Blog
объект. Если вы таким образом передадите ссылку на Blog
класс в шаблон, вы можете отобразить это с помощью:
{{ Blog.likes.through.objects.count }}
Таким образом, это общее количество лайков, заданных всеми User
s на всех Blog
s.
Примечание: обычно лучше использовать
settings.AUTH_USER_MODEL
[Django-doc] для ссылки на пользовательскую модель, чем использоватьUser
модель [Django-doc] напрямую. Для получения дополнительной информации вы можете ознакомиться с разделом «Ссылки наUser
модель» документации.