В 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.

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