Python / Django - нет доступа к связанной модели в общем виде - PullRequest
1 голос
/ 12 октября 2019

Я новичок в Python и Django. У меня есть 3 связанные модели: пациент -> визит -> рецепт

Я хочу переопределить get_context_data в подробном представлении, чтобы иметь доступ ко всем рецептам, связанным с визитом пациента кPatient related_name = «посещения» рецепт для посещения related_name = «рецепты»

но у меня есть ошибка:

Объект PatientFile не имеет атрибута «посещения»

Я смотрю, что внутри себя:

Patient.views.PatientFile объект в 0x04772EB0

Я не понимаю, что я - мой экземпляр пациента, поэтому у меня должен быть доступдля всех посещений с атрибутом 'посещения'?

class PatientFile(DetailView):

    model = Patient
    context_object_name = "patient"
    template_name = "patient/file.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
    context['prescriptions'] = []
    print('self : ', self)
    for visit in self.visits:
        context['prescriptions'].append(visits.prescriptions)
        return context

1 Ответ

1 голос
/ 12 октября 2019

self в вашем DetailView является объектом просмотра PatientFile, а не объектом Patient.

Однако вы можете получить доступ к объекту Patient с помощью self.object [Django-doc] :

class PatientFile(DetailView):

    model = Patient
    context_object_name = 'patient'
    template_name = 'patient/file.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['prescriptions'] = prescriptions = []
        for visit in <b>self.object</b>.visits.all():
            prescriptions.extend(visit.prescriptions.all())
        return context

Обратите внимание, что для перебора отношения необходимо использовать .all(), а не просто self.visits.

...