Как перегруппировать записи в Django по полю модели (более сложный запрос)?

Во-первых, я не являюсь опытным разработчиком Django, я использую Django 4.0.6 на windows 10 и python 3.8.9 в виртуальной среде.

Мне нужна помощь с моим запросом в Django:

сначала вот моя модель:

from django.db import models

class MyWords(models.Model):
    WordText=models.CharField(max_length=1000, unique=True)
    WordStatus=models.IntegerField()
    WordType=models.CharField(max_length=30)

и у меня есть таблица базы данных sqllite со следующими записями в качестве примера:
db.sqlite3
Таблица MyWords:

WordText  WordStatus  WordType
Dog       0           Animal
Cat       1           Animal
Car       4           Object
Lion      1           Animal
Computer  4           Inanimate Object
Stone     5           Inanimate Object
Child     4           Human

Что я хочу сделать, так это получить эту информацию обратно таким образом:

data == [
{'WordType':'Object', 'WordStatus':4,'WordText':'Car'},
{'WordType':'Animal', 'WordStatus':[0,1,1], 'WordText':'Dog','Cat','Lion'},
{'WordType':'Inanimate Object', 'WordStatus':[4,5], 'WordText':'Computer','Stone'},
{'WordType':'Human', 'WordStatus':4, 'WordText':'Human'}
]

По сути, я хочу перегруппировать/категоризировать записи по WordType, чтобы я мог легче получить к ним доступ.

Возможно ли это в Django ORM? Если да, то как?

Сначала я думал использовать что-то вроде values_list с WordType в качестве аргумента, затем distinct и annotate, но я застрял. Что-то вроде этого:

data =MyWords.objects.all().values_list('WordType').distinct().annotate(WordStatus=?).annotate(WordText=?)

Я не знаю, правильно ли это, потому что не знаю, чем заменить вопросительные знаки. Я не знаю, на правильном ли я пути. Кто-нибудь может мне помочь?

N.B: Я не хочу использовать сырые запросы sql, если это возможно, потому что остальная часть проекта использует только Django ORM, вот почему я спрашиваю, иначе я бы использовал просто сырые запросы sql для выполнения работы.

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