Как я могу обновить вложенные отношения
Я изучаю DRF, пытаюсь написать простую систему мониторинга для компьютеров. С клиентом у меня проблем нет, а с сервером есть - UPDATE foreign key.
Код - https://pastebin.com/HgKXKNh0
Как я могу узнать pk для Disk и NetAdapter в
? for disk_data in disks_data:
Disks.objects.update(client=instance, **disk_data)
for adapter_data in net_adapter_data:
NetAdapter.objects.update(client=instance, **adapter_data)
def create(self, validated_data) from https://www.django-rest-framework.org/api-guide/relations/#writable-nested-serializers, Я пытался сделать такое же обновление, но ничего не получилось.
Думаю, вам нужно изменить некоторую логику в методе update.
def update(self, instance, validated_data):
disks_data = validated_data.pop('disk')
net_adapter_data = validated_data.pop('adapter')
for attr, value in validated_data.items():
setattr(instance, attr, value)
for disk_data in disks_data:
if 'id' in disk_data.keys():
disk_id = disk_data.pop('id')
Disks.objects.filter(id = disk_id).update(client = instance, **disk_data)
else:
Disks.objects.create(client = instance, **disk_data)
for adapter_data in net_adapter_data:
if 'id' in adapter_data.keys():
adapter_id = adapter_data.pop('id')
NetAdapter.objects.filter(id = adapter_id).update(client = instance, **adapter_data)
else:
NetAdapter.objects.create(client=instance, **adapter_data)
return instance
Надеюсь, это может помочь.