На словах это выглядит так: Я получаю всю информацию о студентах из модели Students, передаю ее в сериалайзер и затем, на основе id студента мне нужно узнать, есть ли у него долги, содержащиеся в модели Debtors в поле debt (примерно как это выглядит в коде я описал ниже).
# model.py
class Students(models.Model):
first_name = models.CharField(...)
last_name = models.CharField(...)
budget = models.BooleanField(...)
class Debtors(models.Model):
debt = models.CharField(...)
student_id = models.ForeignKey(...)
# viewset.py
class StudentsSet(viewsets.ModelViewSet):
queryset = Students.objects.all()
serializer_class = StudentsSerializer
def get_queryset(self):
queryset = Students.objects.filter(budget=True)
return queryset
# serializer.py
class StudentsSerializer(serializers.ModelSerializer):
info = serializers.SerializerMethodField('get_info')
class Meta:
model = Students
fields = ('id', 'info')
def get_info(self, instance):
return debt_info = Debtors.objects.filter(student_id=instance.id)
Суть в том, что по каждому отдельному id студента будет идти отдельный запрос к модели Debtors, а это не производительно. Я пытаюсь найти способ, как единожды вызвать метод, который получит данные из Debtors сразу по всем имеющимся id, а затем уже распределить эту информацию для каждого студента. Если писать запрос на SQL, то я хочу преобразовать это:
Select debt
From Debtors
Where student_id = какой-то id
В Это:
Select debt
From Debtors
Where student_id In (какой-то id, какой-то id, какой-то id)
Буду очень благодарен за варианты^^