"AttributeError: объект 'list' не имеет атрибута 'items'" При импорте Json
Я получаю следующую ошибку, когда пытаюсь использовать "deleted" часть моего json файла для изменения одного поля (ReportedStatusField) для каждого "Facility" в моей базе данных, которое совпадает с id внутри "deleted":
File "C:\users\management\commands\deactivate_facilities.py", line 42, in handle
for key, data in data_object.items():
AttributeError: 'list' object has no attribute 'items'
В основном это список UUID объектов, которые закрылись, поэтому я изменяю статус таким образом с помощью json файла, который импортируется по url.
import requests
import json
from users.models import Facility
from django.core.management.base import BaseCommand
IMPORT_URL = 'https://domain/file.json'
class Command(BaseCommand):
def import_facility_from_file(self, data):
key = data.get('key', None)
if Facility.objects.filter(key=UUID):
msg = "\n\nFacility closed: {}\n{}".format(key, str())
print(msg)
facility, facility_closed = Facility.objects.update_or_create(key=UUID,
defaults={
'ReportedStatusField': 'closed'
}
)
def handle(self, *args, **options):
headers = {'Content-Type': 'application/json'}
response = requests.get(
url=IMPORT_URL,
headers=headers,
)
response.raise_for_status()
data = response.json()
for key, data_object in data.items():
if key in ["deleted"]:
for key, data in data_object.items():
self.import_facility_from_file(data)
Мой JSON
{
"added":
{"125hk24h5kjh43k5":
{
"UUID":"125hk24h5kjh43k5",
"Name":"Test Facility 1",
"AddressInfo":
{"PrimaryAddress":"1234 Drive RD"},
"ImporterLastModifiedTimestamp":1643721420}},
// This is the "list" of deleted Facilities
"deleted":["235hk24h5kjh43k5,235hk345789h43k5"],
"modified":{"995hk24h5kjh43k5":
{
"UUID":"995hk24h5kjh43k5",
"Name":"Test Facility 2",
"AddressInfo":
{"PrimaryAddress":"2345 Test RD"},
"ImporterLastModifiedTimestamp":1643721420}
}
}
Когда мы используем метод 'items' на словаре, он вернет элемент типа кортеж в списке. и мы не можем запустить метод 'item' на списке
for key, data_object in data.items():
if key in ["deleted"]:
for data in data_object:
self.import_facility_from_file(data)