如何显示特定产品的所有评论?

时间:2019-07-11 06:08:43

标签: python django

使用下面的代码,我正在数据库中添加某些特定产品的评论,虽然效果很好,但是问题是在显示所选产品的评论时。我很困惑如何显示某些产品的所有评论,并且哪个用户在什么时间进行了哪些审核?

models.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

views.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)

detail.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>

1 个答案:

答案 0 :(得分:0)

您可以使用reverse relation这样操作:

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