ArrayField 和 JSONField 在 Django 中作为 base_field
ArrayField with JSONField as base_field in Django
我有一个 GooglePlace 模型,其中包含一个字段来存储 address_components 由 Google Places API.
返回
model.py
address_components = ArrayField(JSONField(), null=True, blank=True)
我正在尝试像这样存储数据
address_components = [component for component in google_place_details.get("address_components")]
但是我收到了这个错误:
column "address_components" is of type jsonb[] but expression is of
type text[] LINE 1: ...
'2018-04-26T07:49:02.101395+00:00'::timestamptz, ARRAY['{"l...
^ HINT: You will need to rewrite or cast the expression.
我尝试了json.dumps每个组件,编码。但我想我错过了一些愚蠢的东西。
任何帮助将不胜感激
这是示例响应:
"address_components":[
{
"long_name":"Chennai",
"short_name":"Chennai",
"types":[
"locality",
"political"
]
},
{
"long_name":"Ramagiri Nagar",
"short_name":"Ramagiri Nagar",
"types":[
"sublocality_level_2",
"sublocality",
"political"
]
},
{
"long_name":"Velachery",
"short_name":"Velachery",
"types":[
"sublocality_level_1",
"sublocality",
"political"
]
},
{
"long_name":"Chennai",
"short_name":"Chennai",
"types":[
"administrative_area_level_2",
"political"
]
},
{
"long_name":"Tamil Nadu",
"short_name":"TN",
"types":[
"administrative_area_level_1",
"political"
]
},
{
"long_name":"India",
"short_name":"IN",
"types":[
"country",
"political"
]
},
{
"long_name":"600042",
"short_name":"600042",
"types":[
"postal_code"
]
}
],
您不需要将 JSON 数据包装在 ArrayField
中。您可以将 address_components
列表直接存储到 JSONField
.
这是一个已知错误 https://code.djangoproject.com/ticket/28291。
我已将我的模型重构为 JSONField()
发件人:address_components = ArrayField(JSONField(), null=True, blank=True)
收件人:address_components = JSONField(null=True, blank=True)
我有一个 GooglePlace 模型,其中包含一个字段来存储 address_components 由 Google Places API.
返回model.py
address_components = ArrayField(JSONField(), null=True, blank=True)
我正在尝试像这样存储数据
address_components = [component for component in google_place_details.get("address_components")]
但是我收到了这个错误:
column "address_components" is of type jsonb[] but expression is of type text[] LINE 1: ...
'2018-04-26T07:49:02.101395+00:00'::timestamptz, ARRAY['{"l... ^ HINT: You will need to rewrite or cast the expression.
我尝试了json.dumps每个组件,编码。但我想我错过了一些愚蠢的东西。
任何帮助将不胜感激
这是示例响应:
"address_components":[
{
"long_name":"Chennai",
"short_name":"Chennai",
"types":[
"locality",
"political"
]
},
{
"long_name":"Ramagiri Nagar",
"short_name":"Ramagiri Nagar",
"types":[
"sublocality_level_2",
"sublocality",
"political"
]
},
{
"long_name":"Velachery",
"short_name":"Velachery",
"types":[
"sublocality_level_1",
"sublocality",
"political"
]
},
{
"long_name":"Chennai",
"short_name":"Chennai",
"types":[
"administrative_area_level_2",
"political"
]
},
{
"long_name":"Tamil Nadu",
"short_name":"TN",
"types":[
"administrative_area_level_1",
"political"
]
},
{
"long_name":"India",
"short_name":"IN",
"types":[
"country",
"political"
]
},
{
"long_name":"600042",
"short_name":"600042",
"types":[
"postal_code"
]
}
],
您不需要将 JSON 数据包装在 ArrayField
中。您可以将 address_components
列表直接存储到 JSONField
.
这是一个已知错误 https://code.djangoproject.com/ticket/28291。
我已将我的模型重构为 JSONField()
发件人:address_components = ArrayField(JSONField(), null=True, blank=True)
收件人:address_components = JSONField(null=True, blank=True)