ArrayField с JSONField в качестве base_field в Django - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть модель 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")]

Но я получаю эту ошибку:

столбец "address_components" имеет тип jsonb [], но выражение имеет введите текст [] ЛИНИЯ 1: ...

'2018-04-26T07: 49: 02.101395 + 00: 00' :: timestamptz, ARRAY ['{"l ... ^ СОВЕТ: Вам нужно будет переписать или привести выражение.

Я пробовал 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"
      ]
   }
],

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Это известная ошибка https://code.djangoproject.com/ticket/28291.

Я реорганизовал мою модель в JSONField ()

От: address_components = ArrayField(JSONField(), null=True, blank=True)

До: address_components = JSONField(null=True, blank=True)

0 голосов
/ 26 апреля 2018

Вам не нужно оборачивать JSON в ArraField. Вы можете сохранить свой список address_components непосредственно в JSONField.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...