我有2个型号: 产品 -审查
每个产品都有一个或多个评论。
问题:如何查看相关对象并将其传递到模板中。
def product_detail(request, id, slug):
product = get_object_or_404(Product, id=id, slug=slug, available=True)
cart_product_form = CartAddProductForm()
reviews = Review.objects.filter()
template = 'shop/product/detail.html'
return render_to_response(template,
{'product': product,
'cart_product_form': cart_product_form,
'reviews': reviews})
class Review(models.Model):
RATING_CHOICES = (
(1, '1'),
(2, '2'),
(3, '3'),
(4, '4'),
(5, '5'),
)
product = models.ForeignKey(Product, on_delete=models.CASCADE, default=None)
user = models.ForeignKey(User, on_delete=models.CASCADE, default=None)
created = models.DateTimeField(auto_now_add=True, auto_now=False)
text = models.TextField(max_length=500, blank=False)
rating = models.IntegerField(choices=RATING_CHOICES, default=5)
def __str__(self):
return "%s" % self.user
答案 0 :(得分:1)
我如何查看此相关对象并将其传递到模板中。
您不需要在模板中传递它们。在模板中,您可以将它们呈现为:
{% for review in product.review_set.all %}
{{ review.text }}
{% endfor %}
如果要呈现一组相关的多个项,最好使用.prefetch_related(..)
[Django-doc]调用在单个查询中预取所有相关对象。
答案 1 :(得分:0)
您可以过滤并传递“审阅”对象中您要获取的产品:
Review.objects.filter(product__id=productid)
这将检索该产品的所有评论,您可以通过某种视图方法获得此评论,并传递到具有上下文的模板
https://docs.djangoproject.com/en/2.2/ref/templates/api/#using-requestcontext https://docs.djangoproject.com/en/2.2/topics/class-based-views/generic-display/