Невозможно получить записи с помощью Django ORM

Проблема:

Пытаюсь получить запись с помощью Django ORM, из таблицы, которая содержит поле JSON, я использую следующую строку:

test_object = House.objects.get(id=301)

Ошибка

TypeError: объект JSON должен быть str, bytes или bytearray, а не dict

Возможная проблема

Заметил, что предыдущий разработчик обновил формат поля JSON в таблице, похоже, что JSON имел плохой формат. Скрипт, используемый для форматирования столбца JSON:

 for i in data:
 jsonstring = json.dumps(i.result)
 new_clear = jsonstring.replace("\\", "")
 new_clear = jsonstring.replace("NaN", "null")
 i.result = json.loads(new_clear)
 i.save()

Комментарии

В pgAdmin поле JSON выглядит хорошо и отформатировано правильно, см. частичную копию JSON ниже:

{"owner_id": 45897, "first_name": "John", "last_name": "DNC", "estate_id": 3201, "sale_date": "3/18/19", "property_street": "123 main st", "property_city": "Miami", "property_state": "FL", "property_zipcode": 33125, "Input_First_Name": "John", "Input_Last_Name": "DNC"}

Я хотел бы знать, как работать с этим полем JSON, чтобы запросить объект. Любая помощь будет оценена по достоинству. Спасибо.

Проверьте, не используется ли в поле пользовательский декодер ( ссылка на документацию ). Если json-данные действительны в БД, попробуйте подключиться к БД в shell с помощью psycopg2.connect(), запросить и декодировать с помощью json.loads(). Я намеревался опубликовать это в виде комментария, но не хватило репутации, на случай, если это имеет какое-то значение.

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