【发布时间】:2019-04-27 14:07:15
【问题描述】:
我正在使用 2 个 Django 模型 Review 和 Item。我想看看用户是否已经审查了该项目。如果是,他会看到评论分数。如果没有,他会看到查看项目的按钮
我有以下评论模型
class Review (models.Model):
review_from = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='review_from')
review_for = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='review_for')
item = models.ForeignKey(OrderItem, related_name='items')
在视图上下文中定义变量(伪代码)
admin = User.objects.get(username="admin")
admins_reviews = Review.objects.filter(review_from__username = "admin")
下面是我的模板
{% for item in buyers_items %}
{% for review in buyers_review%}
{% if review.item.id == item.id %}
<button class="text-success">Your rating<br/><b>{{review.ratings}}/10</b></button>
{% else %}
<a href="{% url ... %}">
<button>Leave Review</button>
</a>
{% endif %}
{% endfor %}
{% endfor %}
如果我这样做,我会收到以下错误
我该如何克服这个问题。
查看
from django import template
register = template.Library()
class OrderHistory(LoginRequiredMixin, ListView):
model = Order
template_name = 'order/order_list.html'
def get_context_data(self, **kwargs):
context = super(OrderHistory, self).get_context_data()
context['order_details'] = Order.objects.filter(emailAddress=self.request.user.email)
context['order_items'] = OrderItem.objects.filter(order__emailAddress=self.request.user.email)
context['buyers_review'] = Review.objects.filter(review_from=self.request.user)
print(context['buyers_review'])
return context
自定义标签
@register.filter()
def review_bought_items(order_items, buyers_review):
return buyers_review.filter(item__in=order_items).exists()
【问题讨论】:
-
不清楚您遇到了什么错误?
-
@JonClements 我已经编辑了图像。我得到 2 个按钮,一个带有评论,一个显示离开评论。见上图。因为他们都有评论。
-
所有这些逻辑都必须在你的后端完成,而不是在模板端。展示您的观点,以便我提供帮助
-
如果您 c/p html 模板,则 {% endif %} 标记处有错字。
-
@Alex 我修复了它在实际代码中是正确的
标签: django python-3.x django-templates django-views