Django:用另一个mod的字段过滤一个模型

2024-05-16 03:30:18 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的第一个Django应用程序。我试图显示一个平均评分从多个评论。在

这似乎在我的产品模板中有效,但在我的博客模板中不起作用,因为productprofile_id没有定义:

product_rating = Review.objects.filter(product_id=productprofile_id).aggregate(Avg('rating')).values() 

如何用Blog模型中的相关产品字段过滤评论模型?或者可以只在我的帖子模板中包含产品视图吗?提前感谢您的帮助!在

我的模型:

^{pr2}$

我的观点:

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%}

Tags: 模型模板idobjects产品requestproductfilter
2条回答

我认为您应该在ProductProfile模型上设置一个评分方法,该模型将返回该产品的平均评价:

class ProductProfile(models.Model):
    ...
    def avg_rating(self):
        return self.review_set.aggregate(Avg('rating')).values()

现在您可以从两个视图中删除它,并在post视图中迭代产品时调用{{ product.avg_rating }}。在

也许吧

{% for productprofile in post.related_product_set.all %} 

{{ productprofile.review.rating }} 

{% endfor %}

是吗?我不记得是否需要所有的东西。在

相关问题 更多 >