Django: "SELECT field, count(field) FROM table GROUP BY field", будучи field объектом

У меня есть следующий выпуск.

Следующие таблицы:

products_table:

id product_type serial_number
1 1 FX2002
2 1 FX2003
3 2 FX2004
4 2 FX2005
5 2 FX2006

product_types_table:

id element
1 laptop
2 mouse
3 screen

В таблице products_table, product_type является внешним ключом к product_types_table.

Мне нужно выполнить следующий запрос:

SELECT product_type, count(product_type) AS quantity FROM products_table

И получаем:

product_type quantity
1 2
2 3

Я пробовал:

queryset = products_table.objects.all().values("product_type").annotate(quantity=Count("product_type"))

Что возвращает следующий набор запросов:

[{'product_type':1, 'quantity':2}, {'product_type':2, 'quantity':3}]

Мне нужно, чтобы поле 'product_type' было объектом, а не целым числом, поэтому поле элемента может быть вызвано как:

element = queryset[0]['product_type'].element

Получаю 'laptop', если печатаю переменную элемента.

Мне нужно также преобразовать эти данные в JSON, и мне нужен следующий ответ:

[
    {
        id: 1,
        product_type: {
            id: 1,
            element: 'laptop'
        },
        serial_number: 'FX2002'
    },
    {
        id: 2,
        product_type: {
            id: 1,
            element: 'laptop'
        },
        serial_number: 'FX2003'
    },
    {
        id: 3,
        product_type: {
            id: 2,
            element: 'mouse'
        },
        serial_number: 'FX2004'
    },
    {
        id: 4,
        product_type: {
            id: 2,
            element: 'mouse'
        },
        serial_number: 'FX2005'
    },
    {
        id: 5,
        product_type: {
            id: 2,
            element: 'mouse'
        },
        serial_number: 'FX2006'
    }
]

Как я могу это сделать???

Спасибо всем вам за уделенное время.

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