Django orm left join возвращает данные как mysql

У меня есть две таблицы следующего вида:

class Classroom(models.Model):
    name = model.ChartField()

class Student(models.Model):
    name = model.ChartField()
    classroom = model.ForeignKey(to='Classroom', related_name='students')

здесь есть такие данные:

Классная комната:

name
Classroom_A
Classroom_B
Classroom_C

Студент:

name classroom
student_1 Classroom_A
student_2 Classroom_A
student_3 Classroom_B

Теперь я хочу получить данные с помощью Django orm следующим образом (возвращается 4 строки данных):

Classroom_name student_name
Classroom_A student_1
Classroom_A student_2
Classroom_B student_3
Classroom_C null

Как я могу написать орм? Результат похож на этот (Это не то, что я хочу):

data = []
for classroom in Classroom.objects.all():
    students = classroom.students.all()
    if students:
        for student in students:
            classroom.student = student
            data.append(classroom)
    else:
        classroom.student = None
        data.append(classroom)

Думаю, что-то подобное даст результаты, аналогичные желаемым

class StudentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Student
        fields = ['name',]


class ClassroomSerializer(serializers.ModelSerializer):
    students = StudentSerializer(many=True)
    class Meta:
        model = Classroom
        fields = [
            'name',
            'students',
        ]

Теперь нужно сериализовать классы с помощью ClassroomSerializer, и данные должны выглядеть следующим образом:

[
    {
    "name":"class_a",
    "students":
         [
             {"name":"student_a"},
             {"name":"student_b"},
         ]
    },
    other_classes...
]
Вернуться на верх