Избегайте многократных запросов к сериализатору с `PrimaryKeyRelatedField` в `ListField`.
У меня есть следующий сериализатор
class SomeSerializer(serializers.Serializer):
fields = serializers.ListField(
allow_empty=False,
child=serializers.PrimaryKeyRelatedField(queryset=someModel.objects.all())
)
Когда я запускаю следующий код в моем представлении/коде:
serializer = SomeSerializer(data={'fields': [1, 2, 3, 4]})
serializer.is_valid()
К БД выполняется 4 различных запроса, по одному get(id) для каждого someModel. Есть ли способ попросить сериализатор выполнить только один запрос? Таким образом, сериализатор использует что-то вроде:
queryset.filter(pk__in=[1, 2, 3, 4])
вместо:
queryset.get(1)
queryset.get(2)
queryset.get(3)
queryset.get(4)
Я попытался покопаться в исходном коде django-rest-framework и похоже, что он выполняет get только для того, чтобы получить данные каждой модели. Но, возможно, я что-то упускаю.