Добавление или изменение объекта в модели Django с помощью json requests list

Есть модель и json request list of dicts от api и мне необходимо внести данные или поменять уже существующие (если такой объект по uuid есть) в мою модель

Не уверен в принципе,что мой код верен, но использую celery и выдаёт ошибку: " counter_party = CounterParty.objects.get(GUID=item['CounterpartyGUID']) KeyError: 'GUID'"

Был бы очень благодарен, если бы кто-то помог разобраться с данной задачей

Пытался также использовать пакет pydentic, но и с ним я ничего конкретного не смог

models.py

class CounterParty(models.Model):
    GUID = models.UUIDField(default=uuid.uuid4, editable=True, unique=True)
    name = models.CharField(max_length=150)
    customer = models.BooleanField(default=False)
    contractor = models.BooleanField(default=False)

    class Meta:
        verbose_name_plural = 'Counter Party'

tasks.py

from u.celery import *
from .models import CounterParty
import requests
from requests.auth import HTTPBasicAuth


@app.task
def create_counter_party():
    response = requests.get("http://1c-prod-un/bp3/hs/BpAPI/WebApp/GetListCounterparty",
                            auth=HTTPBasicAuth('#some-login', '#some-pass'))
    rep = response.json()

    try:
        for item in rep:
            counter_party = CounterParty.objects.get(GUID=item['CounterpartyGUID'])
            for key, value in item.values():
                setattr(counter_party, key, value)
            counter_party.save()
    except CounterParty.DoesNotExist:
        for item in rep:
            new_values = {'GUID': item['CounterpartyGUID'], 'name': 
                          item['CounterpartyName'],
                          'customer': item['Customer'],
                          'contractor': item['Contractor']}
            new_values.update(item)
            counter_party = CounterParty(**new_values)
            counter_party.save()



json request from an api:

[
    {
        "CounterpartyGUID": "#some-uuid",
        "CounterpartyName": "name1",
        "Customer": false,
        "Contractor": true
    },
    {
        "CounterpartyGUID": "#some-uuid",
        "CounterpartyName": "name2",
        "Customer": false,
        "Contractor": true
    },
]

full error:

[2023-01-27 17:48:56,738: ERROR/ForkPoolWorker-3] Task authentication.tasks.create_counter_party[d010bb7b-9304-4e50-aac2-3c1032654f90] raised unexpected: KeyError('GUID')
Traceback (most recent call last):
  File "/home/knefedov/PycharmProjects/unica_b2b_1/venv/lib/python3.10/site-packages/celery/app/trace.py", line 451, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/home/knefedov/PycharmProjects/unica_b2b_1/venv/lib/python3.10/site-packages/celery/app/trace.py", line 734, in __protected_call__
    return self.run(*args, **kwargs)
  File "/home/knefedov/PycharmProjects/unica_b2b_1/authentication/tasks.py", line 20, in create_counter_party
    counter_party = CounterParty.objects.get(GUID=item['CounterpartyGUID'])
KeyError: 'GUID'

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