Добрый день! у меня есть следующие модели и представления:
мои модели:
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? Пробовал прописать разные варианты, постоянно упираюсь в ошибки