Я делаю приложение для контроля присутствия студентов.У меня есть 4 модели:
class Student(models.Model):
name = models.CharField(max_length=70)
class Justification(models.Model):
name = models.CharField(max_length=70)
class Session(models.Model):
date = models.DateTimeField()
present = models.ManyToManyField(Student)
absences = models.ManyToManyField(Student, related_name='absences_set', through='Absence')
class Absence(models.Model):
session = models.ForeignKey(Session, on_delete=models.CASCADE)
atleta = models.ForeignKey(Student, on_delete=models.CASCADE)
justification = models.ForeignKey(Justification, on_delete=models.CASCADE)
Модели имеют больше полей и разных имен (я перевел названия на английский), но это в основном так.
Я использую среду DRF для созданияAPI.Я настроил конечные точки (и сериализаторы) для Student
, Justification
и Absence
, но не могу понять, как создать сериализатор для модели Session
.Я хочу, чтобы это работало, когда кто-то делает следующий POST
(мне нужна только конечная точка для создания Session
s) запроса (я использую ViewSet
для представления):
{
"date": "2019-02-01T10:08:52-02:00"
"present": [
2
],
"absences": [
{
"student": 1,
"justification": 1
}
]
}
НоОтсутствия не созданы.Как я могу заставить эти вложенные отношения работать?
ps: я могу сделать только один запрос, поэтому я не хочу делать один запрос для создания Session
, а затем много запросов для создания Absence
s.и нужно все это вместе.Если есть способ создать их все по одному и тому же запросу (но не только по одному и тому же объекту JSON), я согласен с этим решением