Это мое первое приложение Django. Я пытаюсь отобразить средний рейтинг из нескольких обзоров.Django: отфильтруйте модель с полем из другой модели
Это, кажется, работает в моем шаблоне продукта, но не на моем шаблоне блога, потому что productprofile_id не определен:
product_rating = Review.objects.filter(product_id=productprofile_id).aggregate(Avg('rating')).values()
Как выбирать модель обзора с полем related_products в модели Блога? Или можно просто включить представление продукта в мой шаблон Post? Заранее спасибо за вашу помощь!
мои модели:
class Post(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=100)
related_product = models.ManyToManyField(ProductProfile, blank=True)
def __str__(self):
return self.title
class ProductProfile(models.Model):
product = models.CharField(max_length=80)
avatar = models.ImageField(upload_to='profile_images', blank=True)
price = models.IntegerField()
info = models.TextField(blank=True)
category = models.ForeignKey(ProductCategories)
link = models.URLField(blank=True)
bookmarks = models.ManyToManyField(User, blank=True,related_name='product_bookmarks')
def __str__(self):
return self.product
class Review(models.Model):
user = models.ForeignKey(User)
product = models.ForeignKey(ProductProfile)
rating = models.IntegerField()
review = models.TextField(blank=True)
def __str__(self):
return self.user.username
Мои просмотров:
def post(request, post_id):
try:
post = Post.objects.get(pk=post_id)
except Post.DoesNotExist:
raise Http404
product_rating = Review.objects.filter(product_id=productprofile_id).aggregate(Avg('rating')).values()
return render(request, 'app/blog.html', {'post': post, 'product_rating': product_rating})
def product(request, productprofile_id):
try:
product = ProductProfile.objects.get(pk=productprofile_id)
except ProductProfile.DoesNotExist:
raise Http404
product_media = ProductMedia.objects.filter(product_id=productprofile_id)
product_brand = BrandProfile.objects.filter(products__id=productprofile_id)
review = Review.objects.filter(product_id=productprofile_id)
product_rating = Review.objects.filter(product_id=productprofile_id).aggregate(Avg('rating')).values()
return render(request, 'app/product.html', {'product': product, 'product_media': product_media, 'review': review, 'product_rating': product_rating, 'product_brand': product_brand,})
Мой шаблонный тег:
{% for value in product_rating %} {{ value }} {%endfor%}
Я не могу найти ваш 'Обзор'. – sobolevn
Я не уверен, что вы хотите, чтобы рейтинг был на странице. Сообщение потенциально связано с несколькими Продуктами. Какую ценность вы ожидаете? –
@ DanielRoseman. Я показываю список продуктов, связанных с каждым сообщением. Я также хотел бы показать рейтинг продукта. – Dakine