Python: Удаление строки в базе данных, если ее нет в API
В моей базе данных есть таблица Trader
и Position
.
Для каждой позиции, полученной через API url, я смотрю, существует ли она в моей таблице. Если позиция не существует, я создаю ее.
Я хотел бы удалить Position
в моей базе данных, если она не существует в API.
Я не могу изменить данные, поступающие по url, потому что они поступают из внешнего API. Только данные (encryptedUid, символ) фиксированы, остальные - данные, связанные с ценой криптовалюты
Вот как выглядят данные JSON из url:
{
'symbol': 'BTCUSDT',
'encryptedUid': '08F22AF1161739C74509F9F38F188A8D',
'......': ......,
}
Мой код (Django Command)
def handle(self, *args, **kwargs):
traders = Trader.objects.all()
for t in traders:
uid = t.encrypted_uid
payload = {'encryptedUid': uid, 'tradeType': 'PERPETUAL'}
positions = requests.post(self.URL_POSITION, json=payload).json()['data']['otherPositionRetList']
if positions is not None:
for p in positions:
p['uid'] = uid
find_positions = Position.objects.filter(trader=t).filter(symbol=p['symbol'])
if not find_positions:
trader = Trader.objects.get(encrypted_uid=p['uid'])
self.save(trader, p)
Данные из моей базы данных
<QuerySet [{'id': 117, 'trader_id': 1, 'symbol': 'BNBUSDT', 'entry_price': 342.966434, 'amount': 350.0, 'direction': '', 'leverage': 25.0, 'closed': False}]>
Я попытался сделать цикл по всем позициям. Чтобы перебрать API для поиска совпадений с (encryptedUid & symbol)