Объединение двух наборов запросов в Django ORM

Я пишу представление, которое возвращает следующее:

[
    {
        "field_id" : 1,
        "stock" : [
            {
                "size" : "M",
                "total" : 3
            }
        ],
        "reserved" : [
            {
                "size" : "M",
                "total" : 1
            }
        ]
    },
    {
        "field_id" : 2,
        "stock" : [
            {
                "size" : "M",
                "total" : 2
            },
            {
                "size" : "PP",
                "total" : 2
            }
        ],
        "reserved" : [
            {
                "size" : "PP",
                "total" : 1
            },
            {
                "size" : "M",
                "total" : 2
            }
        ]
    }
]

Для этого результата я использовал values и annotation (django orm):

reserved = Reserved.objects.all().values("size").annotate(total=Count("size")).order_by("total")

stock = Stock.objects.filter(amount=0).values('size').annotate(total=Count('size')).order_by('total'))

Это нормально для меня, но я хотел бы поместить кверисет reserved внутри stock. Например, так:

[ 
    { 
        "field_id" : 1, 
        "stock" : [ 
            { 
                "size" : "M", 
                "total" : 3, 
                "reserved": 1 
            } 
        ], 
    }, 
    { 
        "field_id" : 2, 
        "stock" : [ 
            { 
                "size" : "M", 
                "total" : 2, 
                "reserved": 1 
 
            }, 
            { 
                "size" : "PP", 
                "total" : 2, 
                "reserved": 0 
            } 
        ], 
    } 
]

Возможно ли это? Резерв и запас не имеют отношения.

Вернуться на верх