Обновление базы данных через 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(...)
так, как вы хотите.