【问题标题】:Unable to get records using Django ORM无法使用 Django ORM 获取记录
【发布时间】:2022-01-01 14:09:33
【问题描述】:

问题:

尝试使用 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_data 的类型。如果它已经是一个字典,那么不要 json 解码...
  • 嗨,我只是从 shell 中使用 get 进行查询:House.objects.get(id=301)。我没有运行任何自定义逻辑,只想获取对象。谢谢
  • 您将字典传递给需要字符串的函数

标签: python json django django-models orm


【解决方案1】:

检查字段中是否使用了自定义解码器 (docs reference)。 如果 json 数据在 db 中有效,请尝试使用psycopg2.connect() 连接到 shell 中的 db,使用 json.loads() 进行查询和解码。 我打算将此作为评论发布,但声誉不够,以防万一。

【讨论】:

    猜你喜欢
    • 2017-10-04
    • 2013-07-27
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2019-09-18
    相关资源
    最近更新 更多