Изменение модели с помощью Celery и списка запросов Json
У меня есть модель и запрос json списка dicts из api и мне нужно добавить или изменить предмет в этой модели
Но я не уверен, что мой код правильный, использую celery и он получил ошибку: " counter_party = CounterParty.objects.get(GUID=item['CounterpartyGUID']) KeyError: 'GUID'"
Я пробовал и pydantic, но так и не смог решить эту проблему
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-запрос от api:
[
{
"CounterpartyGUID": "#some-uuid",
"CounterpartyName": "name1",
"Customer": false,
"Contractor": true
},
{
"CounterpartyGUID": "#some-uuid",
"CounterpartyName": "name2",
"Customer": false,
"Contractor": true
},
]