首页 > 解决方案 > 如何显示特定产品的所有评论?

问题描述

使用下面的代码,我正在为数据库中的某些特定产品添加评论,它做得很好,但问题是在显示所选产品的评论时。我很困惑如何显示某些产品的所有评论以及完成的评论哪个用户在什么时间?

模型.py

class Product(models.Model):
    name = models.CharField(max_length=250)
    description = models.TextField(blank=True)
    featured = models.BooleanField(default=False)

    def __str__(self):
        return self.name


class Review(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    review = models.TextField()
    date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.review

视图.py

def detail(request,pk):
    product = College.objects.get(pk=pk)

    form = ReviewForm()
    return render(request,'products/detail.html',{'product':product,'form':form})

 @login_required(login_url='products:signin')
 def review(request,pk):
    if request.method == "POST":
        form = ReviewForm(request.POST)
        if form.is_valid():
            review = form.save(commit=False)
            review.product = Product.objects.get(pk=pk)
            review.user = request.user
            review.save()
            messages.success(request, "Review saved")
            return redirect('products:detail',pk)
        else:
            messages.error(request,'error in form')
    return redirect('products:detail', pk)

详细信息.html

<h3>All reviews(total.no. of reviews?)</h3>
# Here i want to display all reviews and which is done by which user and at what time



         <div class="col-lg-6 col-md-6 mb-6">
            <form method="post" action="{% url 'products:review' product.pk %}">
                {% csrf_token %}
            {% form.as_p %}
            <input type="submit" class="btn btn-success">
            </form>
     </div>

标签: pythondjango

解决方案


你可以这样做reverse relation

<h3>All reviews {{ product.review_set.count }}</h3>
{% for review in product.review_set.all %}
    {{ review.review }}
    {{ review.date }}
{% endfor %}

推荐阅读