提问人:J.C 提问时间:5/8/2020 更新时间:5/8/2020 访问量:193
使用 Django 通用详细信息视图从 url 请求中传递值
Pass value from url request with Django generic detail view
问:
在 GenericList 中,当单击一个时,我重定向到
url(r'^machine/(?P<pk>[0-9]+)$', MachineDetailView.as_view(), name='machine-detail'),
哪里
class MachineDetailView(DetailView):
model = Awg
template_name = 'gui/machine_detail.html'
context_object_name = 'last_entry'
ordering = ['-timestamp']
但是,我需要的是获取 AWG 记录,其中 machine.id 是 AWG 中的外键。
在我看来,它看起来像这样:
class MachineDetailView(DetailView):
last_entry = Awg.objects.filter(machine_id=Machine.objects.filter(id=pk).first()).first()
model = Awg
template_name = 'gui/machine_detail.html'
context_object_name = 'last_entry'
ordering = ['-timestamp']
这不起作用,因为我不知道如何获取请求的 url 中的内容。
很抱歉,如果菜鸟,我确实尝试查看 django 文档。pk
答:
3赞
willeM_ Van Onsem
5/8/2020
#1
您可以重写 .get_object(..)
方法 [Django-doc],并进行返回该对象的查询。您可以从 URL 模式中获取参数,通过该模式是包含 URL 参数的字典:pk
self.kwargs
class MachineDetailView(DetailView):
model = Awg
template_name = 'gui/machine_detail.html'
context_object_name = 'last_entry'
def get_object(self, queryset=None):
return Awg.objects.filter(
machine_id=self.kwargs['pk']
).latest('timestamp')
评论
1赞
J.C
5/8/2020
这确实有效。我不可能自己找到这个。干杯!
评论