簡體   English   中英

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

但是我需要的是獲取其中 machine.id 是 AWG 中的外鍵的 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 中的那個pk 抱歉,如果新手,我確實嘗試查看 django 文檔。

您可以覆蓋.get_object(..)方法 [Django-doc] ,並進行查詢以返回該 object。 您可以通過self.kwargs從 url 模式中獲取pk參數,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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM