как получить имя поля на основе идентификатора в отношениях в DJANGO - PullRequest
0 голосов
/ 11 марта 2020

У меня есть цепочечные модели отношений, такие как Клини c, Доктор и Специальность Клини c и Доктор имеют отношение M2M, а Доктор имеет идентификатор специальности (внешний ключ). Я фильтрую врачей по местонахождению Clini c (город и область). Это работает, но проблема в том, что doctor_set просто возвращает specialit_id, но я хочу, чтобы название специальности здесь было моим взглядом.

class PlanDoctorListView(generic.DetailView):
model = ClinicHospital
def get(self,request,*args,**kwargs):
    clinics = ClinicHospital.objects.get(city_id=kwargs.get('city'),area_id=kwargs.get('area'))
    doctors = list(clinics.doctor_set.all().values())
    return JsonResponse(doctors,safe=False)

как я могу получить название специальности

здесь - models.py

class Doctor(models.Model):
name =  models.CharField(max_length = 256)
contact = models.CharField(max_length = 12)
speciality = models.ForeignKey(Speciality, on_delete=models.CASCADE)
clinic_hospital = models.ManyToManyField(ClinicHospital, through='DoctorHospital')

class Speciality(models.Model):
name = models.CharField(max_length = 256)
code = models.CharField(max_length = 256)
def __str__(self):
    return self.name

1 Ответ

0 голосов
/ 11 марта 2020

проблема в том, что doctor_set просто возвращает specialit_id, но я хочу, чтобы название специальности здесь было моим взглядом.

Просто добавьте необходимые поля в values()

doctors = list(clinics.doctor_set.all().values('name', 'contact', 'speciality__name', ...)
...