Как проверить существует ли такое поле для модели
Я начинающий в 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 но это не вариант для меня. Спасибо за любую помощь