Вложенные сериализаторы с разными наборами запросов

Как создать вложенный сериализатор с собственным набором запросов?

В следующем примере я хотел бы заменить функцию '@api_view' на представление на основе класса с сериализаторами.

Упрощенно, у меня есть следующий код: models.py

class Klass(models.Model):
    name = models.TextField()

class Pupils(models.Model):
    name = models.TextField()
    klass = models.ForeignKey(Klass)

class Chapter(models.Model):
    """A Chapter in a school book."""
    name = models.TextField()

class TestResult(models.Model):
    """TestResults for a Chapter."""
    pupil = models.ForeignKey(Pupil)
    chapter = models.ForeignKey(Chapter)
    score = models.IntegerField()
    

view.py

@api_view
def testresults(request, klass_id, chapter_id):
    pupils = Pupils.objects.filter(klas__id=klass_id)
    tests = Tests.objects.filter(chapter__id=chapter_id)
    ret_val = []
    for pupil in pupils:
        pu = {
            "name": pupil.name,
            "tests": [{"score": test.score,
                       "chapter": test.chapter.name} for test in tests.filter(pupil=pupil)]
            }
        ret_val.append(pu)
    return Response({"pupils": ret_val})

url /api/testresult/<klass_id>/<chapter_id>/

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