【发布时间】: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> ·
<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 />
【问题讨论】: