Задать вопрос
@Enter_a_nickname

Django-Rest-Framework POST-запрос c многоуровневым json, как прописать представление?

Добрый день! у меня есть следующие модели и представления:
мои модели:
class Modules(models.Model):
    module_name = models.CharField(max_length=50)
    module_duaration = models.IntegerField()
    class_room = models.IntegerField()

    def __str__(self):
        return self.module_name

class Students(models.Model):
    name = models.CharField(max_length=50)
    age = models.IntegerField()
    grade = models.IntegerField()
    modules = models.ManyToManyField(Modules)

    def __str__(self):
        return self.name



Мои представления:

class StudentsViewSet(viewsets.ModelViewSet):
    serializer_class = StudentsSerializer

    def get_queryset(self):
        student = Students.objects.all()
        return student

    def create(self, request, *args, **kwargs):
        data = request.data

        new_student = Students.objects.create(
            name=data["name"], age=data['age'], grade=data["grade"])

        new_student.save()

        for module in data["modules"]:
            module_obj = Modules.objects.create(module_name=module["module_name"],
                                                module_duaration=module["module_duaration"],
                                                class_room=module["class_room"])
            new_student.modules.add(module_obj)

        serializer = StudentsSerializer(new_student)

        return Response(serializer.data)




Это позволяет мне через post отправлять такие данные:

{
        "name": "gb",
        "age": 11,
        "grade": 22,
        "modules": [
            {
                "module_name": "erer",
                "module_duaration": 1,
                "class_room": 1
            },
            {
                "module_name": "rer",
                "module_duaration": 2,
                "class_room": 2
            }, ...
        ]
    }


Данное решение работает корректно, но мне необходимо добавить еще один уровень в json чтобы получилось следующее:

{
        "Test": "test1",
        "stud": [
             {
            "name": "bbbg",
            "age": 10,
            "grade": 10,
            "modules": [
                {
                "module_name": "erer",
                "module_duaration": 1,
                "class_room": 1
                },
                {
                 "module_name": "rer",
                "module_duaration": 2,
                "class_room": 2
                }
            ]
            }
        ]
    }


Если предположим, что мои модели выглядят следующим образом:
class Modules(models.Model):
    module_name = models.CharField(max_length=50)
    module_duaration = models.IntegerField()
    class_room = models.IntegerField()

    def __str__(self):
        return self.module_name

class Students(models.Model):
    name = models.CharField(max_length=50)
    age = models.IntegerField()
    grade = models.IntegerField()
    modules = models.ManyToManyField(Modules)

    def __str__(self):
        return self.name

class Test(models.Model):
    Test = models.CharField(max_length=50)
    stud = models.ForeignKey(Students, on_delete=models.CASCADE)


То как будет выглядеть мой views? Пробовал прописать разные варианты, постоянно упираюсь в ошибки
  • Вопрос задан
  • 103 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы