如何从 Kraken API 解决 Django 中的“'int' 对象不可订阅”

How to solve "'int' object is not subscriptable" in Django from a Kraken API

我想知道当存在字符串或整数数组 (https://docs.kraken.com/rest/#operation/getOHLCData) 时,在 Django SQLite 中保存来自 Kraken API 的数字的正确方法是什么。

我的views.py

from rest_framework import generics
from .serializers import KrakenSerializer
from krakenohlc.models import Krak
import requests

class KrakenList(generics.RetrieveAPIView):
    serializer_class = KrakenSerializer
    queryset = Krak.objects.all()

    def get_object(request):
        url = 'https://api.kraken.com/0/public/OHLC?pair=XBTEUR'
        response = requests.get(url)
        data = response.json()

        for i in data['result'].values():  
            kraken_data = Krak(
                time_0=(i[0][0]),
            )
            kraken_data.save()

我的models.py

from django.db import models
class Krak(models.Model):
    time_0 = models.IntegerField(blank=True, null=True)

    def __str__(self):
        return self.time_0

这是我在浏览器中遇到的错误:

SQLite 响应实际上是在数据库中保存 API 号码:

我在这里彻底研究并尝试了许多类似的案例,但是 none 有一个 API 响应的示例,其中包含此错误消息。

我认为问题出在数组的“结果”数组中的最后一项 - “last”。好像只是一个数字。我猜你需要在算法中进行一些类型检查。

代码修改建议:

for i in data['result'].values():
  # Skips "last" attribute
  if isinstance(i, int):
    continue
  kraken_data = Krak(
    time_0=(i[0][0]),
  )
  kraken_data.save()