В Django как удалить, получить и обновить таблицу при вызове внешнего API
Мне интересно, как правильно удалить одну таблицу в базе данных и обновлять ее новой информацией из внешнего API при каждом вызове. По сути, каждый раз, когда вызывается API, информация, сохраненная в таблице, должна быть заменена новой.
my views.py
from rest_framework import generics
from .serializers import TickerSerializer
from ticker.models import Ticker
import requests
import logging
logger = logging.getLogger(__name__)
class TickerList(generics.ListAPIView):
serializer_class = TickerSerializer
queryset = Ticker.objects.all()
class TickerRetrieve(generics.RetrieveUpdateDestroyAPIView):
serializer_class = TickerSerializer
queryset = Ticker.objects.all()
lookup_field = 'id'
def get_object(request):
url = 'https://api.kraken.com/0/public/Ticker?pair=1INCHEUR,1INCHUSD'
response = requests.get(url)
data = response.json()
for key in data['result']:
if isinstance(data['result'][key], int):
continue
crypto_data =data['result'][key]
ticker_data = Ticker(crypto = (key),
crypto = (key),
a_0 = (crypto_data.get('a')[0]),
)
ticker_data.save()
my models.py
from django.db import models
class Ticker(models.Model):
id = models.AutoField(primary_key=True) # auto increment field
crypto = models.CharField(blank=True, null=True, max_length=25)
a_0 = models.FloatField(null=True, blank=True, default=None)
my serializers.py
from rest_framework import serializers
from ticker.models import Ticker
class TickerSerializer(serializers.ModelSerializer):
class Meta:
model = Ticker
fields = (
'id',
'crypto',
'a_0',
)
my urls.py
from .views import TickerList, TickerRetrieve
from django.urls import path
app_name = 'ticker'
urlpatterns = [
path('', TickerList().as_view(), name='ticker'),
path('tickerretrieve/', TickerRetrieve().as_view(), name='tickerretrieve'),
]
Каждый раз, когда я вызываю API tickerretrieve/, он добавляет больше информации в таблицу, в то время как мне нужно сначала удалить существующую. Я исследовал и перепробовал множество подобных случаев, но ни в одном из них не было примера внешнего API с RetrieveUpdateDestroy.