Как правильно объединить два набора запросов в Django

У меня есть следующая логика, реализованная в конечной точке.

    def get(self, request, branchName, stack, resultType, buildNumberMIN, buildNumberMAX, format=None):
        try:
            # use ONE query to pull all data
            relevant_notes = Notes.objects.filter(
                branchName=branchName, stack=stack, resultType=resultType)

            # filter on the endpoint parameters (range of numbers)
            requested_range = relevant_notes.filter(
                buildNumber__gte=buildNumberMIN, buildNumber__lte=buildNumberMAX)
            
            # also pull latest note -- regardless of requested range
            latest_note = relevant_notes.latest('buildNumber')

            # join the notes
            return_set = requested_range | latest_note
            #serialize the data
            serializer = serializers.NoteSerializerWithJiraData(
                return_set, many=True)

            return Response(serializer.data)

        except Notes.DoesNotExist:
            return Response({"message": f"No notes found"}, status=404)

Контекст: логика проста - получить диапазон заметок, но также включить последнюю заметку на основе параметров url. Если диапазон заметок не содержит данных, все равно возвращается последняя.

Проблема, с которой я столкнулся

AttributeError at /api/v2/notes/Test/Test/Test/1/2/
'Notes' object has no attribute '_known_related_objects'

Возможно, ему не нравится, что я добавляю попытку объединить набор запросов с одним объектом...

Проблема здесь связана с типом объектов, которые я пытаюсь объединить.

Один - кверисет, содержащий множество экземпляров нот, другой - один экземпляр ноты.

Вместо использования .latest() я смог решить проблему, просто используя .filter(), так как метод фильтрации возвращает набор запросов... примерно так

latest_note = relevant_notes.order_by('-buildNumber')[:1]
Вернуться на верх