Python 在Django的一个视图中显示多个模型

Python 在Django的一个视图中显示多个模型,python,django,Python,Django,我是Django的初学者,我有个问题…。 我创建了一个应用程序(名称:PQR),包含3个模型(患者/问题/回复) 我希望看到顶部有患者姓名的视图,在此视图下,所有问题都可用,如果适用,问题旁边的答案(一些患者可能有空回答/没有回答)。 我知道如何显示患者的答案,但我想显示每个问题,如果有的话,我想提供答案,但我不知道如何在我的视图中书写 这是我的模型: Class Patient(models.Model): name = models.CharField(max_length=50)

我是Django的初学者,我有个问题…。 我创建了一个应用程序(名称:PQR),包含3个模型(患者/问题/回复) 我希望看到顶部有患者姓名的视图,在此视图下,所有问题都可用,如果适用,问题旁边的答案(一些患者可能有空回答/没有回答)。 我知道如何显示患者的答案,但我想显示每个问题,如果有的话,我想提供答案,但我不知道如何在我的视图中书写

这是我的模型:

Class Patient(models.Model):
    name = models.CharField(max_length=50)

def __unicode__(self):
    return self.name

def listReply(self):
    replies = Reply.objects.filter(patient= self.id)
    return replies

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

def __unicode__(self):
    return self.question_text


class Reply(models.Model):
    question = models.ForeignKey(Question)
    patient = models.ForeignKey(Patient)
    reply_text = models.CharField(max_length=200)

def __unicode__(self):
    return str(self.reply_text)
我的看法是:

from django.shortcuts import render, get_object_or_404
from django.template import RequestContext
from .models import Patient, Question, Reply

def list(request):
    list_patient = Patient.objects.order_by('name') context = RequestContext(request, {'list_patient':list_patient,'welcome': 'Welcome on my page Django !',
})
return render(request, 'PQR/list.html', context)

def detail(request, patient_id):
    patient = get_object_or_404(Patient, pk=patient_id)
    list_question = Question.objects.all()
    Replies4MyPatient = Reply.objects.filter(patient=patient_id)
    return render(request, 'PQR/detail.html', locals())
这是我的网址:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.list, name ='list_patient'),
    url(r'^(?P<patient_id>[0-9]+)/patient/$', views.detail, name ='detail_patient'),
从django.conf.url导入url
从…起导入视图
URL模式=[
url(r'^$',views.list,name='list\u patient'),
url(r'^(?P[0-9]+)/patient/$',views.detail,name='detail_patient'),
这是我的模板:

{% load staticfiles %} 
<link rel="stylesheet" type="text/css" href="{% static 'Forum/style.css' %}" /> 
<div> 
<h1>Patient details : {{ patient }}</h1>    
</div> 
<fieldset> 
{% csrf_token %} 
{% for reply in Replies4MyPatient %} 
        </br><abcd>{{ reply.question }}</abcd></br> 
        </br> 
            <li>{{ reply }}</li> 
{% endfor %} 
</fieldset></br> 
<a href="{% url 'list_patient' %}"/> <input type="button" value="Look Back"/> 
{%load staticfiles%}
患者详细信息:{{Patient}
{%csrf_令牌%}
{4MyPatient%%中答复的百分比}

{{reply.question}}

  • {{reply}}
  • {%endfor%}

    感谢您的帮助!

    函数
    render
    构建html以返回模板和上下文。在模板
    PQR/detail.html
    中,您使用
    {patient}
    Replies4MyPatient
    。您需要使用这些值构建上下文并将其传递给
    render

    def detail(request, patient_id):
        patient = get_object_or_404(Patient, pk=patient_id)
        list_question = Question.objects.all()
        Replies4MyPatient = Reply.objects.filter(patient=patient_id)
        context = {'patient' : patient, 'Replies4MyPatient' : Replies4MyPatient}
        return render(request, 'PQR/detail.html', context=context)
    

    你的问题是什么?!?在这句话中,什么是
    pk
    ?你需要1)澄清问题并更改标题2)向
    返回呈现添加上下文(请求'PQR/detail.html',locals())
    告诉他使用
    列出问题
    患者
    ,以及3)在
    'PQR/detail.html'
    中使用
    列出问题
    患者
    。如果您对该模板有问题,请将其添加到您的问题中我已编辑了我的问题我在这里找到了一种解决方案:[