我的DetailView出现问题。我想确保两个值都在URL字符串中,然后要显示页面。但是,我总是在这里收到此错误:
KeyError at /orders/ticket/ug2dc78agz-1/d04fkjmo37/
'order_reference'
views.py
class TicketView(DetailView):
model = Attendee
template_name = 'orders/ticket_view.html'
def get_queryset(self):
return Attendee.objects.filter(
order__order_reference=self.kwargs['order_reference'],
).filter(
access_key=self.kwargs['access_key'],
)
urls.py
urlpatterns = [
path(
'ticket/<slug:ticket_reference>/<slug:access_key>/',
TicketView.as_view(),
name='ticket'
),
]
答案 0 :(得分:1)
由于尝试访问 ` if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
view.startDragAndDrop(dragData, myShadow, null, 0);
} else {
view.startDrag(dragData, myShadow, null, 0);
}`
而出现错误,但是您没有在self.kwargs['order_reference']
中使用order_reference
。
您的path()
使用,
path()
因此,您可以使用'ticket/<slug:ticket_reference>/<slug:access_key>/'
和self.kwargs['ticket_reference']
。
由于您的路径不包含self.kwargs['access_key']
或slug
,因此Django将不知道如何获取详细信息视图的对象。我会覆盖pk
而不是get_object
:
get_queryset
答案 1 :(得分:0)
您有ticket_reference
个url变量,但考虑到使用order_reference
。您应该将其重命名:
class TicketView(DetailView):
model = Attendee
template_name = 'orders/ticket_view.html'
def get_queryset(self):
return Attendee.objects.filter(
order__order_reference=self.kwargs['ticket_reference'],
).filter(
access_key=self.kwargs['access_key'],
)