Как я могу обновить вложенные отношения

Я изучаю 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

Надеюсь, это может помочь.

Вернуться на верх