首页 > 解决方案 > Django - 特定项目的基于类的视图

问题描述

构建一个 Django 应用程序,其中我有一个显示不同案例列表的视图。当您单击案例时,我希望它带您进入与案例相关的项目列表(在本例中是设备列表)。我面临的问题我不知道如何使视图仅显示与该案例相关的项目(现在它显示每个案例中的每个项目)。

意见:

class MdeListView(LoginRequiredMixin, ListView):
    model = Mde
    template_name = 'mde/mde.html'
    ordering = [F('date').desc()]

    def get_queryset(self):
        return Mde.objects.distinct('case_number')


class MdeCaseListView(LoginRequiredMixin, ListView):
    model = Mde
    template_name = 'mde/mde_case_list.html'

网址.py

from django.urls import path

from .views import MdeListView, MdeCreateView, MdeCaseListView

urlpatterns = [
    path('<int:pk>/list', MdeCaseListView.as_view(), name='mde_case_list'),
    path('new', MdeCreateView.as_view(), name='mde_new'),
    path('', MdeListView.as_view(), name='mde'),
]

url 根据主键转到正确的记录,但从那里我只想要使用与该主键相同的 case_number 的项目。

标签: djangodjango-views

解决方案


我能够弄清楚!

class MdeCaseListView(LoginRequiredMixin, ListView):
    model = Mde
    template_name = 'mde/mde_case_list.html'

    def get_queryset(self):
        pkey = self.kwargs.get("pk")
        case = Mde.objects.filter(id=pkey).values_list('case_number', flat=True)
        return Mde.objects.filter(case_number=case[0])

推荐阅读