我有两个与自定义表(如Clinic和Doctor)以及自定义表DoctorClinic有许多关系的模型。 如何获得基于诊所的医生名单? 这是我的views.py
class ClinicDetailView(generic.DetailView):
model = Clinic
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['doctor_list'] = self.doctor_set.annotate(
shift=F('doctor_list__shift'),
timming=F('doctor_list__timming')
return context
我收到错误对象没有属性Doctor_set 这是我的模型。py
class Clinic(models.Model):
name = models.CharField(max_length = 256)
area = models.ForeignKey(Area, on_delete=models.CASCADE,default=None,null=True)
city = models.ForeignKey(City, on_delete=models.CASCADE,default=None,null=True)
address = models.TextField()
contact = models.CharField(max_length = 18)
category = models.CharField(max_length=30,choices = CHTYPE)
lat = models.FloatField()
lon = models.FloatField()
class Doctor(models.Model):
name = models.CharField(max_length = 256)
speciality = models.CharField(max_length = 256)
contact = models.CharField(max_length = 12)
speciality = models.ForeignKey(Speciality, on_delete=models.CASCADE)
clinic_hospital = models.ManyToManyField(Clinic, through='DoctorHospital')
class DoctorHospital(models.Model):
clinic = models.ForeignKey(ClinicHospital, on_delete=models.CASCADE)
doctor = models.ForeignKey(Doctor, on_delete=models.CASCADE)
shift = models.CharField(max_length=10)
# time_from = models.DateTimeField(auto_now_add=False,blank=True)
# time_to = models.DateTimeField( auto_now_add=False,blank=True)
timing = models.CharField(max_length=20,blank=True)
这是我的urls.py
path('clinichospital/<int:pk>/',views.ClinicHospitalDetailView.as_view(),name = 'clinichospital_detail')
请帮助我如何显示我的医生清单。
答案 0 :(得分:0)
尝试一下:
class ClinicDetailView(generic.DetailView):
model = Clinic
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
client_id = self.kwargs['pk'] # Pull id out of url
client = Client.objects.get(id=client_id)
context['doctor_list'] = client.doctor_set.annotate(
shift=F('doctor_list__shift'),
timming=F('doctor_list__timming')
) # Missing bracket
return context