Django сохраняет dict из Json в DB

#python #json #django

#python #json #django

Вопрос:

я хотел бы знать, как я могу сохранить поле, которое я получаю из json, как dict. в поле моей базы данных. В настоящее время я получаю только

объект ‘int’ не вызывается

спасибо и с уважением

Комментарии:

1. Пожалуйста, добавьте полную модель и представление, а также полную обратную трассировку ошибок.

2. я добавил поле из models.py Остальное вырезано из задания celery, поэтому никаких представлений или шаблонов, только чистая обработка данных.

3. Что вы пытаетесь сделать с user.acc_balance('confirmed') ? Как указано в ошибке, acc_balance является целым числом, оно не знает, что делать с «подтвержденным» параметром, который вы передаете.

4. да, я думаю, это моя ошибка, я просто хочу сохранить значение «подтверждено» в поле DB «user.acc_balance», ни больше, ни меньше.

5. Что с update_or_create частью? Вы хотите сохранить данные пользователя, которые у вас есть как user ? Если я правильно понимаю, вы хотите сохранить подтвержденное значение из decoded_balance в поле acc_balance пользователя. Это правильно?

Ответ №1:

Я думаю, это то, что вы пытаетесь сделать:

 decoded_balance = json.loads(check_balance) 
user.acc_balance = decoded_balance["confirmed"]
user.save()
  

У вас уже есть user , просто обновите это acc_balance поле и сохраните его.

Кроме того, вы можете захотеть проверить, как анализировать json. Например, в этом случае у вас есть что-то вроде этого:

 decoded_balance
# eg: {'confirmed': 2, 'unconfirmed': 3}
decoded_balance["confirmed"]
# 2
  

Комментарии:

1. хорошо, а что, если значение confirmed время от времени меняется или увеличивается? пока спасибо: D

2. я не знаю большей области вашего кода, но если у вас уже есть пользователь в переменной, как в этом случае, вы обновляете поле acc_balance, присваивая новое значение и сохраняя его. Вы бы использовали update_or_create, если вы не знаете наверняка, что пользователь существует, также вам нужно было бы передать все другие поля, необходимые для получения или создания правильного пользователя, а не только acc_balance