首页 > 解决方案 > Python/Django - 无法访问通用视图中的链接模型

问题描述

我是 Python 和 Django 的新手我已经链接了 3 个模型:患者 -> 访问 -> 处方

我想在 detailView 中覆盖 get_context_data 以访问与患者就诊相关的所有处方

但我有一个错误:

PatientFile 对象没有属性“访问”

我看看self里面是什么:

0x04772EB0 处的患者.views.PatientFile 对象

我不明白 self 是我的患者实例,所以我应该可以访问所有具有“访问”属性的访问?

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

标签: pythondjangoself

解决方案


self你的DetailViewPatientFile视图对象,而不是Patient对象。

但是,您可以使用[Django-doc]访问该Patient对象:self.object

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 self.object.visits.all():
            prescriptions.extend(visit.prescriptions.all())
        return context

请注意,为了迭代关系,您应该使用.all(),而不仅仅是self.visits


推荐阅读