В 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 и получил следующую ошибку: enter image description here

Как я могу решить эту ошибку? Ваша помощь будет очень ценной.

Примечание: когда я закомментировал переменные, которые возвращают ошибку, мой ответ Django REST выглядит следующим образом: enter image description here

Кракен док здесь: kraken AssetPair API doc

Я хотел бы поделиться подходом и исследованием, которое я нашел для решения вышеуказанной проблемы:

Случай 1 - API возвращает список вместо числа. В файле views.py я изменил переменную "fees", включив в нее индекс, который позволит мне собирать информацию, поступающую со второго уровня во вложенном "массиве массивов чисел" в API Kraken:

fees = i["fees"][1][1]

Схема ответаAPI:

enter image description here

Случай 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

Вернуться на верх