Обновление базы данных через GET-запрос в Generic views в Django

У меня есть Generic view, который будет перечислять записи из моей БД для GET запроса к localhost:8000 Однако я также хочу UPDATE эти записи после GET. Например, GET localhost:8000 вернет список следующим образом:

[
    {
        "user": 1,
        "address": "sdfgasgasdfg",
        "balance": "123.00000000"
    },
    {
        "user": 1,
        "address": "sdfgasgasdfg25",
        "balance": "123.00000000"
    }
]

После GET я хотел бы также сделать API к https://www.blockchain.com/api/blockchain_api для получения последнего баланса BTC и обновления значений баланса для этих адресов в моей БД. Не совсем уверен, как это сделать с помощью общих представлений

view

class WalletListCreateAPIView(generics.ListCreateAPIView):
    queryset = Wallet.objects.all()
    serializer_class = WalletSerializer

модель

class Wallet(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    address = models.CharField(max_length=34)
    balance = models.DecimalField(max_digits=16, decimal_places=8)
    slug = models.SlugField(max_length=34, blank=True, null=True)

    def __str__(self):
        return self.address

    def save(self, *args, **kwargs):
        self.slug = slugify(self.address)
        super().save(*args, **kwargs)

Я бы переопределил метод list(...) API (который вызывается при GET-запросе)

class WalletListCreateAPIView(generics.ListCreateAPIView):
    queryset = Wallet.objects.all()
    serializer_class = WalletSerializer

    def pull_data_from_api_and_update_db(self):
        # do some stuff here
        pass

    def list(self, request, *args, **kwargs):
        self.pull_data_from_api_and_update_db()
        return super().list(request, *args, **kwargs)

Здесь вы можете добавить/обновить метод pull_data_from_api_and_update_db(...) так, как вы хотите.

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