@WebDev921

Как получить сумму полей объектов Django?

Есть модели User и Post. Пользователь может создать кучу постов, у этих постов есть количество лайков. Как получить сумму лайков у этого юзера со всех постов без циклов по кверисету?
User:
class User(models.Model):
    django_user = models.OneToOneField(
        DjangoUser, on_delete=models.CASCADE, related_name='user')
    name = models.CharField(verbose_name='Имя', max_length=100)
    surname = models.CharField(
        verbose_name='Фамилия', max_length=100)
    phone = models.CharField(
        verbose_name='Телефон', blank=True, max_length=100)
    save_date = models.DateTimeField(
        verbose_name="Дата последнего сохранения", default=now)

    def __str__(self):
        return self.name + ' ' + self.surname

    def get_like_total(self):
        .....


Post
class Post(models.Model):
    active = models.BooleanField(verbose_name='Активность', default=True)
    user = models.ForeignKey(
        'User', verbose_name='Пользователь',
        null=True, related_name='posts', on_delete=models.CASCADE)
    title = models.CharField(
        verbose_name='Заголовок', null=True, max_length=200)
    category = models.ForeignKey(
        'Category', verbose_name='Категория', null=True,
        related_name='posts', on_delete=models.SET_NULL)
    edit_date = models.DateTimeField(
        verbose_name="Дата редактирования", default=now)


PostLike
class PostLikes(models.Model):
    user = models.ForeignKey(
        'User', verbose_name="Пользователь",
        on_delete=models.CASCADE, related_name="likes")
    post = models.ForeignKey(
        'Post', verbose_name="Пост",
        on_delete=models.CASCADE, related_name="likes")
  • Вопрос задан
  • 778 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
likes = user.posts.all().aggregate(Count('likes'))['likes__count']
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы