'How I can update nested relationships
I'm learn DRF, trying write simple monitoring system for computers. With client I havent problem, but with server have one - UPDATE foreign key.
Code - https://pastebin.com/HgKXKNh0
How I can known pk for Disk and NetAdapter in
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, I tried to do the same update, but it didn't work.
Solution 1:[1]
I think you need to change some logic in update method.
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
Hope it could help.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | David Lu |
