用Django通用详细视图从url请求中传递值。

问题描述 投票:1回答:1

在通用列表中,当点击其中一个时,我将重定向至

    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']

那是行不通的,因为我不知道如何获取这些信息 pk 这是在请求的url中。如果是新手,请原谅,我确实尝试在django docs中寻找。

python django web server-side
1个回答
2
投票

你可以覆盖 .get_object(..) 方法[Django-doc]你可以通过查询来获得 pk 参数从url模式通过 self.kwargs 这是一个包含URL参数的字典。

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')
© www.soinside.com 2019 - 2024. All rights reserved.