Древовидные модели Django, в которых двое имеют множество взаимосвязей

#python #django

#python #django

Вопрос:

У меня есть эти модели, и я хочу выбрать конкретные данные из всех моделей

Пример:

Consultatie.objects.filter(pacient= 1)

получение данных из Diagnotic, специфичных для этого пациента

получение данных из Medicamentatie, специфичных для этого пациента

 class Pacient(models.Model):
  name= models.CharField(max_length=100)

class Medicamentatie(models.Model):
  lista_medicament = models.ForeignKey(ListaMedicamente, on_delete=models.PROTECT, choices='')

class Diagnostic(models.Model):
    lista_boala = models.ForeignKey(ListaBoli, on_delete=models.PROTECT, choices='')
    medicamentatie_diagnostic = models.ManyToManyField(Medicamentatie)

class Consultatie(models.Model):
    pacient = models.ForeignKey(Pacient, on_delete=models.CASCADE, choices='')
    medic = models.ForeignKey(Medic, on_delete=models.PROTECT, choices='')
    diagnostic = models.ManyToManyField(Diagnostic)
 

Ответ №1:

вы можете попробовать сделать что-то вроде этого:

 diagnostics_id_list = 
list(set(Consultatie.objects.filter(pacient=1).values_list('diagnostic', 
flat=True)))
diagnostics = Diagnostics.objects.filter(id__in=diagnostics_ids)
 

Благодаря этому вы получите всю уникальную диагностику для вашего пациента.

Не могу сказать о медикаментозности, потому что в вашем коде нет модели ListaMedicamente.

Комментарии:

1. Спасибо! я попробую. ListMedicamente не так важен … это только для выбора некоторых уже вставленных данных