Как проверить существует ли такое поле для модели

Я начинающий в django ....... У меня есть такая модель

class Product(models.Model):
    title = models.CharField(max_length=50)
    description = models.TextField(blank=True)
    owner = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
    slug = models.SlugField(unique=True)  # "штрих код"
    price = models.DecimalField(max_digits=8,
                                decimal_places=2, )  # поле для поддержания высокой точности расчета /decimal_places знаки после запятой
    creation_date = models.DateTimeField(auto_now_add=True)  # auto now сдесь время создания записи в базе данных
    last_update_time = models.DateTimeField(auto_now=True)  # auto now сдесь время последнего обновления
    image1 = models.ImageField(blank=True)
    mark = models.CharField(max_length=50, blank=True)

class Review(models.Model):
    review = models.TextField(max_length=500)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    product_connected = models.ForeignKey(Product, on_delete=models.CASCADE, related_name="reviews")
    creation_date = models.DateTimeField(auto_now_add=True)
    last_update_time = models.DateTimeField(auto_now=True)
    rating = models.IntegerField(default=0, validators=[MinValueValidator(0), MaxValueValidator(5)])

и вот такой views

class ProductDetailView(LoginRequiredMixin, DetailView):
    model = Product
    template_name = "product.html"
    context_object_name = "product"

    @staticmethod
    def round_custom(num, step=0.5):
        return round(num / step) * step

    def get_context_data(self, **kwargs):
        data = super().get_context_data(**kwargs)
        data["pictures_list"] = Photo.objects.filter(product_connected=self.get_object())
        data["comments"] = Review.objects.filter(product_connected=self.get_object())
        if self.request.user.is_authenticated:
            data['comment_form'] = CommentForm(instance=self.request.user)
        average_rt=Review.objects.filter(
                                  product_connected=self.get_object()).aggregate(Avg('rating'))
        avr_intermediate = str(average_rt.get("rating__avg")).replace(",", ".")
        data["average_rating"] = self.round_custom(float(avr_intermediate))
        return data

Вся вот эта схема с average нужна чтоб выводить рейтинг на сайт(rating), проблема в том, что создается товар в модели product, а класс review создается только тогда, когда пользователь пишет отзыв. Так вот, как мне проверять, что для данного Product есть Review, и если есть, то возвращать return data["average_rating"] через мою схему, а если нет то просто в data average возвращать 0. Потому что без существующего поля в мой код приходит None и выдает ошибку, а если есть хоть один Review, то всё работает как надо, то что rating можно перекинуть в Product но это не вариант для меня. Спасибо за любую помощь

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