Сохранение данных в базу данных в django

Я работаю над сайтом, который будет рекомендовать акции на фондовом рынке, основываясь на исторически надежных торговых стратегиях.

При запуске сервера я не вижу никаких данных, которые должны отображаться на сайте. Если заглянуть в базу данных, то окажется, что большая часть данных не сохраняется в базе данных. Есть и другая проблема, которая может быть связана с этим: При выполнении кода я получаю название компании для последней акции, которая просматривается в цикле, но для остальных там просто написано «None». Буду благодарен, если кто-нибудь сможет помочь мне с этим.

Вот код для циклического просмотра каждой акции:

def compile_queue(self):
        from stock.models import Stock
        list_of_stocks = Stock.objects.prefetch_related("stock_data", "strategies", "recommendations").values('ticker')[0:101]
        for i in list_of_stocks.values():
            try:
                #Update db with new data
                ticker = i.ticker
                stock_object = Stock_Class(ticker)
                self.list_of_operations.append(lambda i=i: stock_object.update_data(i))
                
                # Get strategy objects
                moving_average_strategy = Moving_Average_Strategy(ticker)
                rsi_strategy = RSI_Strategy(ticker)
                bollinger_band_strategy = Bollinger_Bands_Strategy(ticker)
                
                # Add strategies to the queue
                self.list_of_operations.append(lambda:moving_average_strategy.apply_strategy())
                self.list_of_operations.append(lambda:rsi_strategy.apply_strategy())
                self.list_of_operations.append(lambda:bollinger_band_strategy.apply_strategy())
                    
                self.list_of_operations.append(lambda:stock_object.set_recommendations(i))
            except Exception as e:
                print(f"(Trading_System.py) The required actions for {i} could not be run due to Error: {e}")

Вот часть кода, которая получает данные по заданной акции и должна сохранить их в базе данных:

 def update_data(self, primary_key):
        stock = yf.Ticker(self.ticker)
        stock_info = stock.info
        current_date_and_time = timezone.now()
        
        try:   # Updates data for Stock model
            stock_model = Stock.objects.get(ticker=self.ticker)
            stock_model.company_name = stock_info.get('shortName')
            stock_model.sector = stock_info.get('sector')
            stock_model.last_updated = current_date_and_time
            stock_model.save()
        except ObjectDoesNotExist:
            print("(Stock.py 1) There was a problem executing getting the data or saving it to the database.")
        
        try:   # Updates data for StockData model
            stock_data_model = StockData.objects.get(ticker=self.ticker)
            stock_data_model.current_date = date.today()
            stock_data_model.current_price = stock_info['currentPrice']
            stock_data_model.last_200_close_prices = self.get_stock_close_prices()
            price_change = stock_data_model.current_price - stock_data_model.last_200_close_prices[-2]
            stock_data_model.price_change = price_change
            stock_data_model.price_change_percent = 100*(price_change/stock_data_model.last_200_close_prices[-2])
            stock_data_model.save()
        except ObjectDoesNotExist:
            print("(Stock.py 2) There was a problem executing getting the data or saving it to the database.")
    

Я проверил, что получаю правильные данные, и это не кажется проблемой. Я спрашивал об этом у ChatGPT, но у него нет ответа, который бы мне помог.

Я буду благодарен, если у кого-нибудь есть предложения, как это исправить.

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