我有一个ListView,另外还必须检索上下文以显示事件标题。我目前正在使用Event.objects.filter(order_reference=self.kwargs['order_reference'],).first()
检索事件标题。我现在想知道.first()
是否是正确的方法?
我主要是问,因为我可以获得该事件名称的另一种方法是使用object_list。这样可以减少数据库查询,但是我会有不必要的for loop
,我必须在一个周期{% for tickets in object_list %}{{ tickets.order.event.name }}{% endfor %}
之后停止操作
views.py
# Create your views here.
class OrderListView(ListView):
allow_empty = False
template_name = 'orders/order_list.html'
def get_queryset(self):
return OrderItem.objects.filter(
order__order_reference=self.kwargs['order_reference'],
)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['event'] = Event.objects.filter(
order_reference=self.kwargs['order_reference'],
).first()
return context
order_list.html:
{% extends "base.html" %}
{% block content %}
<h1>{{ event.event.name }}</h1>
{% for tickets in object_list %}
{{ tickets.ticket_name }}
{% endfor %}
{% endblock content %}