python - Django:DetailView 和多个 slug
问题描述
我的 DetailView 有问题。我想确保两个值都在 url 字符串中,然后想要显示页面。但是我总是在这里收到这个错误:
KeyError at /orders/ticket/ug2dc78agz-1/d04fkjmo37/
'order_reference'
视图.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'],
)
网址.py
urlpatterns = [
path(
'ticket/<slug:ticket_reference>/<slug:access_key>/',
TicketView.as_view(),
name='ticket'
),
]
解决方案
您收到错误是因为您尝试访问self.kwargs['order_reference']
,但您没有order_reference
在path()
.
你的path()
用途,
'ticket/<slug:ticket_reference>/<slug:access_key>/'
因此您可以使用self.kwargs['ticket_reference']
and self.kwargs['access_key']
。
由于您的路径不包含slug
or pk
,Django 将不知道如何获取详细视图的对象。我会覆盖get_object
而不是get_queryset
:
def get_object(self):
return get_object_or_404(
Attendee,
order__order_reference=self.kwargs['slug:ticket_reference'],
access_key=self.kwargs['access_key'],
)
推荐阅读
- sql-server - 如何让自动迁移与 SQL Server 一起工作
- javascript - 我如何显示我的登录用户下的他/她的订单列表?
- javascript - 如何修复 vue js 或 javascript 比较逻辑错误
- node.js - 我根本无法启动管理 SDK
- javascript - 如何将使用 id 的函数替换为类名
- android - react-native - 如何检测何时按下主页按钮?
- image - React Native Animated.event onScroll 从左上角而不是中心缩放图像
- javascript - str.replace() 方法没有按预期工作
- java - 安卓 Java OpenCV。检测和绘制霍夫线的问题
- debian - 将 debian 32 位升级到 64 位