Как я могу подсчитать общее количество отзывов во всех постах автора?

Я создаю сайт электронной коммерции, здесь также есть система аккаунтов мерчендайзеров. Каждый мерчендайзер может загрузить фото своего продукта со всей информацией для продажи. Товаровед может продавать различные типы товаров. Покупатели могут оставлять отзывы о товаре, который они купили. Теперь я хочу показать общее количество покупателей, оставивших отзывы о товарах продавца. Например: seller-1: 10 reviews, 4.5 star, seller-2: 5 reviews, 4.8 star, seller-3: 11 reviews, 4.1 star. Как я могу это сделать? Пожалуйста, помогите мне😢...

models.py:

class Products(models.Model):
    user = models.ForeignKey(User, related_name="merchandise_product_related_name", on_delete=models.CASCADE, blank=True, null=True)
    product_title = models.CharField(blank=True, null=True, max_length = 250)
    brand = models.CharField(max_length=250, blank=True, null=True)
    product_desc = RichTextField(blank=True, null=True)


class ProductREVIEWS(models.Model):

    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='userREVIEW',on_delete=models.CASCADE)
    product = models.ForeignKey(Products, related_name='productREVIEWrelatedNAME',on_delete=models.CASCADE)
    feedBACK = models.TextField(blank=True, null=True)
    rating = models.IntegerField(blank=True, null=True)

Вы можете .annotate(…) [Django-doc] с:

from django.db.models import Count

User.objects.annotate(
    number_of_reviews=Count('merchandise_product_related_name__productREVIEWrelatedNAME')
)

Объекты User, возникающие в результате этого QuerySet, будут иметь дополнительный атрибут .number_of_reviews.

Вернуться на верх