Как перегруппировать записи в 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 для выполнения работы.