Мне нужно некоторое руководство для реализации сериализаторов для моделей, содержащих много-много полей в обобщенном виде.Предположим, у меня есть следующие (чрезвычайно упрощенные) модели:
class Operative(models.Model):
name = models.CharField(max_length=256, blank=False)
email = models.EmailField(unique=True, null=True)
desiganation = models.PositiveSmallIntegerField(default=0, choices=((0, 'Operative'), (1, 'Manager'), (2, 'Owner')))
class Task(models.Model):
title = models.CharField(max_length=256, blank=False)
manager = models.ForeignKey(Operative, null=True,on_delete=models.SET_NULL)
operatives = models.ManyToManyField(Operative, blank=True)
deadline = models.DateTimeField(null=True, blank=True)
Теперь, если у меня есть такой сериализатор:
class TaskSerializer(ModelSerializer):
class Meta:
model = Task
fields = ('id', 'title', 'manager', 'operatives', 'deadline')
read_only_fields = ('id',)
Каков наилучший подход для обработки запросов на обновление, содержащихцелые идентификаторы для менеджера и оперативников?API обновления будет получать POST-запросы, содержащие данные json, например:
{
"id": 1002,
"title": "Task1",
"deadline": "2018-09-15T15:53:00+05:00",
"manager": 55,
"operatives": [102, 110, 324]
}
Я хотел бы реализовать настраиваемую логику для внешних ключей и много-много полей внутри сериализатора.В настоящее время я использую некоторые вспомогательные методы в представлении для получения / установки идентификаторов для оперативников и менеджера, и это кажется немного неуклюжим.