2015-06-08 3 views
0

Я новичок в Django, и у меня есть проблема .... Я создал приложение (имя: PQR) с 3-мя моделями (Пациент/Вопрос/Ответ) Я хочу посмотреть мнения с именем пациента наверху, под этим, все вопросы и, если применимо, ответы ниже на вопрос (у некоторых пациентов может быть пустой ответ/нет ответа). Я знаю, как отображать ответы для пациента, но я хотел бы отображать КАЖДЫЕ вопросы, и если они доступны, я хочу дать ответ, но я не знаю, как это сделать на мой взгляд?Показать несколько моделей в одном представлении в Django

Это моя модель:

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()) 

И это мои URLs:

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'), 

И это мой шаблон:

{% 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"/> 

Спасибо вам за помощь!

+2

И каков ваш вопрос?!? – deets

+0

что такое 'pk' в этом выражении' pk = patient_id' ?? –

+0

pk mean Первичный ключ –

ответ

0

Функция 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) 
Смежные вопросы