【问题标题】:Django ListView is missing a QuerySet - Error Message - 2 Models In 1 ViewDjango ListView 缺少 QuerySet - 错误消息 - 2 个模型在 1 个视图中
【发布时间】:2021-05-30 13:56:46
【问题描述】:

我正在尝试在单个列表视图中查看来自 2 个模型的数据。我收到以下错误消息,但我似乎无法弄清楚原因。我已经包含了浏览器错误、views.py、urls.py 和 html 页面。任何帮助将不胜感激,作为旁注,我是编程、Python 和 Django 的新手。

错误: 在 /scripts/patientsdetails/ 中配置不当 PatientListView 缺少查询集。定义 PatientListView.model、PatientListView.queryset,或覆盖 PatientListView.get_queryset()。 请求方法:GET 请求网址:http://127.0.0.1:8000/scripts/patientsdetails/ Django 版本:3.2.2 异常类型:配置不当 异常值:
PatientListView 缺少查询集。定义 PatientListView.model、PatientListView.queryset,或覆盖 PatientListView.get_queryset()。

urls.py

from django.urls import path
from .views import (
    ScriptListView,
    ScriptUpdateView,
    ScriptDetailView,
    ScriptDeleteView,
    ScriptCreateView,
    PatientListView,
    PatientUpdateView,
    PatientDetailView,
    PatientDeleteView,
    PatientCreateView,
)
urlpatterns = [
    path('patientsdetails/', 
        PatientListView.as_view(), name='patient_list'),

]

views.py

from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import ListView, DetailView
from django.views.generic.edit import UpdateView, DeleteView, CreateView
from django.urls import reverse_lazy
from bootstrap_datepicker_plus import DatePickerInput, TimePickerInput
from django.contrib.auth import get_user_model
from django.shortcuts import render
from scripts.models import Patient, Script
from .models import Script, Patient

class PatientListView(LoginRequiredMixin, ListView):
    template_name = 'patient_summary.html'
 
    def get_context_data(self, **kwargs):
        context = super(PatientListView, self).get_context_data(**kwargs).filter(author=self.request.user)
        context['patient'] = Patient.objects.filter(author=self.request.user)
        context['script'] = Script.objects.filter(author=self.request.user)
        return context

html

    {% for patient in object_list %}
        <div class="card">
            <div class="card-header">
                <span class="font-weight-bold">{{ patient.patient_name }}</span> &middot;
                <span class="text-muted"></span>
            </div>
            <div class="card-body">
                Cycle Start Date - {{ patient.cycle_start_day }} <br>
                {% endfor %}

                {% for script in object_list %}
                Drug Name - {{ script.drug_name }} <br>
                {% endfor %}
                </div>
            <div class="card-footer text-center text-muted">
            </div>
        </div>
        <br />

【问题讨论】:

    标签: python django


    【解决方案1】:

    我认为从错误中可以清楚地看出,您必须通过列表视图定义要处理的模型/查询集属性 在你看来这样做:

    model = Patient
    

    或者

    queryset = Patient.objects.all()
    

    或者重写get_queryset方法

    def get_queryset(self):
            return Patient.objects.all()
    

    【讨论】:

    • 对我来说有点道理,但我感到困惑的是,如果在一个视图中需要显示多个模型,如果我去 model = x 那么我被锁定在看对了吗?
    • 属性定义将是您的主要模型,然后您可以覆盖 get_context_data 以传递辅助模型数据请检查此答案它肯定会有所帮助..stackoverflow.com/questions/31133963/…
    • 非常感谢。您在上面提供的链接为我提供了我正在寻找的信息。等我搞定所有细节后,我会在这里发布最终视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2017-08-20
    • 1970-01-01
    • 2015-10-30
    • 2016-10-21
    • 1970-01-01
    相关资源
    最近更新 更多