Если вы заказываете элементы по внешнему ключу, то вы можете использовать itertools.groupby
для этого:
from itertools import groupby
from operator import attrgetter
result = [
list(v)
for __, v in grouby(Student.objects.order('parentId_id'), attrgetter('parentId_id'))
]
или если вы хотите создать словарь для того, куда вы отображаетеparent
объектов в список из Student
s:
result = {
k: list(v)
for k, v in grouby(
Student.objects.prefetch_realted('parentId').order('parentId_id'),
attrgetter('parentId')
)
}
Таким образом, будет сгенерирован список списков, где в каждом подсписке student
s с одинаковыми parentId
сгруппированы вместе.
Обратите внимание, что ForeignKey
s обычно имеют суффикс no _id
или Id
.Поэтому вы можете изменить модель на:
class Student(models.Model):
<b>parent</b> = models.ForeignKey()
name = models.CharField()
age = models.IntegerField()