В Django почему возникает ошибка "TypeError at / Field 'fees' expected a number but got [[0, 0.26], [50000, 0.24], [100000, 0.22], ..."?
Я пытаюсь понять, как получить в Django последовательность строк, целое число и массив целых чисел или чисел из Kraken API. Я просмотрел другие примеры здесь и создал код ниже. Строки в моем коде возвращают правильные значения, однако массивы целых чисел возвращают ошибку. Как я могу решить эту ошибку и получить контроль над каждой частью содержимого этого API?
views.py я отметил переменные, которые "возвращаются OK", а те, которые возвращаются неправильно - "NOT OK"
from django.shortcuts import render
from meal_app.models import Kraken
import requests
def get_krakens(request):
all_krakens = {}
url ='https://api.kraken.com/0/public/AssetPairs'
response = requests.get(url)
data = response.json()
for i in data['result'].values():
kraken_data = Kraken(
altname = i['altname'], # string return OK
wsname = i['wsname'], # string return OK
aclass_base = i['aclass_base'], # string return OK
base = i['base'], # string return OK
aclass_quote = i['aclass_quote'], # string return OK
quote = i['quote'], # string return OK
lot = i['lot'], # string return OK
pair_decimals = i['pair_decimals'], # integer return OK
lot_decimals = i['lot_decimals'], # integer return OK
lot_multiplier = i['lot_multiplier'], # integer return OK
# leverage_buy = i['leverage_buy'], # Array of integers NOT OK
# leverage_sell = i['leverage_sell'], # Array of integers NOT OK
fees = i['fees'], # Array of Array of integers or numbers NOT OK
# fees_maker = i['fees_maker'], # Array of Array of integers or numbers NOT OK
fee_volume_currency = i['fee_volume_currency'], # string return OK
margin_call = i['margin_call'], # integer return OK
margin_stop = i['margin_stop'], # integer return OK
# ordermin = i['ordermin'] # string NOT OK
)
kraken_data.save()
all_krakens = Kraken.objects.all().order_by('-id')
return render (request, 'meals/kraken.html', { "all_krakens":
all_krakens} )
В качестве примера возвращаемой ошибки, я откомментировал переменную fees и получил следующую ошибку:
Как я могу решить эту ошибку? Ваша помощь будет очень ценной.
Примечание: когда я закомментировал переменные, которые возвращают ошибку, мой ответ Django REST выглядит следующим образом:
Кракен док здесь: kraken AssetPair API doc
Я хотел бы поделиться подходом и исследованием, которое я нашел для решения вышеуказанной проблемы:
Случай 1 - API возвращает список вместо числа. В файле views.py я изменил переменную "fees", включив в нее индекс, который позволит мне собирать информацию, поступающую со второго уровня во вложенном "массиве массивов чисел" в API Kraken:
fees = i["fees"][1][1]
Схема ответаAPI:
Случай 2 - неправильный формат модели В models.py я изменил класс переменной с "IntegerField" на "FloatField", что позволило мне правильно возвращать число с плавающей точкой:
ordermin = models.FloatField(null=True, blank=True, default=None)
Источник: https://docs.djangoproject.com/en/3.2/ref/models/fields/#django.db.models.FloatField