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)

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