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'
}
]
Как я могу это сделать???
Спасибо всем вам за уделенное время.