как через DRF добавить данные в модель со связанными полями
Добрый день есть модель со связанными полями
class Car(models.Model):
car_number = models.CharField(unique=True, max_length=12, verbose_name='Зав. № машины')
technic = models.ForeignKey('Technic', on_delete=models.CASCADE, verbose_name='Модель техники')
engine = models.ForeignKey('Engine', on_delete=models.CASCADE, verbose_name='Модель двигателя')
engine_number = models.CharField(max_length=12, verbose_name='Зав. № двигателя')
transmission = models.ForeignKey('Transmission', on_delete=models.CASCADE, verbose_name='Модель трансмиссии')
transmission_number = models.CharField(max_length=12, verbose_name='Зав. № трансмиссии')
driving_bridge = models.ForeignKey('DrivingBridge', on_delete=models.CASCADE, verbose_name='Модель ведущего моста')
driving_bridge_number = models.CharField(max_length=12, verbose_name='Зав. № ведущего моста')
controlled_bridge = models.ForeignKey('ControlledBridge', on_delete=models.CASCADE, verbose_name='Модель управляемого моста')
controlled_bridge_number = models.CharField(max_length=12, verbose_name='Зав. № управляемого моста')
delivery_contract = models.CharField(max_length=20, verbose_name='Договор поставки №, дата')
date_shipment = models.DateField(default=datetime.now, verbose_name='Дата отгрузки с завода')
consignee = models.CharField(max_length=200, verbose_name='Грузополучатель (конечный потребитель)')
delivery_address = models.CharField(max_length=200, verbose_name='Адрес поставки (эксплуатации)')
equipment = models.TextField(blank=False,verbose_name='Комплектация (доп. опции)', default="Стандарт")
client = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='Клиент')
service_company = models.ForeignKey('ServiceCompany', on_delete=models.CASCADE, verbose_name='Сервисная компания')
def __str__(self):
return f'Зав. № машины ->{self.car_number}'
class Meta:
verbose_name = 'Машина'
verbose_name_plural = 'Машины'
есть сериализер:
class CarSerializer(serializers.ModelSerializer):
class Meta:
model = Car
fields = '__all__'
depth = 1
метод GET работает отлично
{
"id": 1,
"car_number": "0017",
"engine_number": "7ML1035",
"transmission_number": "21D0108251",
"driving_bridge_number": "21D0107997",
"controlled_bridge_number": "21D0093265",
"delivery_contract": "101",
"date_shipment": "2022-03-09",
"consignee": "ВЧ 45",
"delivery_address": "п. Знаменский, Респ. Марий Эл",
"equipment": "1. Гидролинии с БРС;\r\n2. Дополнительная установка парной кабины",
"technic": {
"id": 1,
"name": "ПД1,5",
"description": "После прохода снегоочистителей сдвигающего действия образуются снежные валы, которые необходимо убирать. Для этой работы используется несколько разных типов техники. Один из вариантов — шнекороторный снегоуборщик с активным рабочим органом. Изначально они были созданы для пробивки путей через многометровые снежные слои, но в городах и на трассах их применяют для уборки снежных валов, оставленных плужными снегоочистителями.Эта машина называется ДЭ-226. Много лет она выпускалась на минском заводе «Ударник», который был главным производителем такого оборудования в СССР. Сейчас шнекороторы собирают уже не в Минске, а в Пинске. Конструктивно ДЭ-226 восходит еще к американскому Snogo, поставлявшемуся в СССР по ленд-лизу в период ВОВ. По сути это эдакий «автомат Калашникова» среди снегоочистителей — отработанный десятилетиями и доказавший свою профпригодность, остающийся актуальным несмотря на возраст. Чаще шнекороторы используют все-таки на трассах, но иногда выводят и на городские улицы, если вдоль них есть место, куда перебросить снег."
},
"engine": {
"id": 1,
"name": "Kubota D1803",
"description": "Двигатель – энергосиловая машина, преобразующая какой-либо вид энергии в механическую работу. Еще двигатель называют \"мотором\", что было позаимствовано из немецкого языка. Различают различные типы двигателей из которых широкое распространение получили двигатели внутреннего сгорания и электрические двигатели. Существует более подробная классификация двигателей внутреннего сгорания."
},
"transmission": {
"id": 1,
"name": "10VA-00105",
"description": "Сцепление .."
},
"driving_bridge": {
"id": 6,
"name": "20VA-00101",
"description": "Ведущие мосты. х."
},
"controlled_bridge": {
"id": 1,
"name": "VS20-00001",
"description": "Управляемые е."
},
"client": {
"id": 8,
"password": "pbkdf2_sha256$390000$x8Wm3QXhLkYcOlniLgd3Cm$zjjaAJH+SuFMJ3t4vZZEoo2W1hhUO3PKfa47Vz7qp5Q=",
"last_login": null,
"is_superuser": false,
"username": "umba",
"first_name": "Юмба",
"last_name": "",
"email": "umba@ya.ru",
"is_staff": false,
"is_active": true,
"date_joined": "2023-02-08T10:49:00Z",
"groups": [
1
],
"user_permissions": []
},
"service_company": {
"id": 2,
"name": "ООО Силант",
"description": "Сервисный центр — организация."
}
},
{
Подскажите как реализовать метод РOST для модели с вложенными полями ( с плоской моделью работает без проблем ) а с вложенной уже всю голову поломал (((
Источник: Stack Overflow на русском