Is there a way to neatly return a queryset’s values_list of related objects from many objects’ related managers at the same time without having to write a loop ?
In other words this query:
JavaScript
x
2
1
Hospital.objects.first().treatments.all().values_list('treatment_appointments', flat=True)
2
will return me a list of PKs that will look something like this:
JavaScript
1
2
1
<QuerySet [1, 32, 35, 21, 30, 28, 29, 13, 56, 58, 59, 60, 61, 66, 67, 87]>
2
Is it possible to write such query that will return the actual objects instead of those PKs?
here are the models:
JavaScript
1
10
10
1
class Treatment(models.Model):
2
name=models.TextField()
3
4
class Hospital(models.Model):
5
treatments = models.ManyToManyField(Treatment, related_name='treatments')
6
7
8
class Appointment(models.Model):
9
treatment = models.ForeignKey(Treatment, related_name='appointment_treatments')
10
Advertisement
Answer
You can filter with:
JavaScript
1
2
1
hospital = Hospital.objects.first()
2
Appointment.objects.filter(treament__hispital=hospital)