简体   繁体   中英

Unable to get records using Django ORM

Problem:

Trying to get a record using Django ORM, from a table that contains a JSON field, I'm using the following line:

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

Error

TypeError: the JSON object must be str, bytes or bytearray, not dict

Possible issue

Noticed that a previous developer updated the format of the JSON field in the table, seems that JSON had a bad format. Script used to format the JSON column:

 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()

Comments

In pgAdmin the JSON field looks good and it is formatted properly, see a partial copy of the JSON below:

{"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"}

I would like to know how to deal with this JSON field in order to query the object. Any help will be appreciated. Thanks.

Check if there's a custom decoder being used in the field ( docs reference ). If the json data is valid in db, try connecting to db in shell using psycopg2.connect() , query, and decode using json.loads() . I'd intended to post this as a comment, but not enough reputation, in case this is of any concern.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM