From 5125e69db556c43e3bbf59aa608e0ed6c0c9521d Mon Sep 17 00:00:00 2001 From: OpenClaw Sub-agent Date: Tue, 28 Apr 2026 14:15:37 +1000 Subject: [PATCH] fix: remove duplicate serializer classes causing 500 on Transaction API The serializers.py file had two issues: 1. A second definition of TransactionSerializer that included a non-existent 'price_per_share' field, overriding the correct one and causing 500 errors on GET/POST /api/invest/transactions/. 2. Duplicate AIHoldingInputSerializer and AIUpdateSerializer blocks that were redundant (same content as the first definitions). Removed all duplicate class definitions, leaving only the correct single definitions that match the Transaction model fields. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- invest/serializers.py | 50 ------------------------------------------- 1 file changed, 50 deletions(-) diff --git a/invest/serializers.py b/invest/serializers.py index 8fef76d..b99f380 100644 --- a/invest/serializers.py +++ b/invest/serializers.py @@ -58,40 +58,6 @@ class AIUpdateSerializer(serializers.Serializer): -class TransactionSerializer(serializers.ModelSerializer): - action_display = serializers.CharField(source='get_action_display', read_only=True) - - class Meta: - model = Transaction - fields = [ - 'id', 'portfolio', 'action', 'action_display', - 'stock_code', 'quantity', 'price_per_share', 'date', - 'created_at', - ] - read_only_fields = ['id', 'created_at'] - - -class PortfolioSerializer(serializers.ModelSerializer): - stocks = StockSerializer(many=True, read_only=True) - - class Meta: - model = Portfolio - fields = ['id', 'name', 'created_at', 'stocks'] - read_only_fields = ['id', 'created_at'] - - -class PortfolioListSerializer(serializers.ModelSerializer): - stock_count = serializers.SerializerMethodField() - - class Meta: - model = Portfolio - fields = ['id', 'name', 'created_at', 'stock_count'] - read_only_fields = ['id', 'created_at'] - - def get_stock_count(self, obj): - return obj.stocks.count() - - # --------------------------------------------------------------------------+ # Holdings (with real-time prices) | # -------------------------------------------------------------------------+ @@ -116,22 +82,6 @@ class PortfolioHoldingsSerializer(serializers.Serializer): total_pnl_pct = serializers.FloatField() -# --------------------------------------------------------------------------+ -# AI Update | -# -------------------------------------------------------------------------+ - -class AIHoldingInputSerializer(serializers.Serializer): - stock_code = serializers.CharField() - quantity = serializers.FloatField() - avg_cost = serializers.FloatField(required=False, default=0.0) - - -class AIUpdateSerializer(serializers.Serializer): - portfolio_id = serializers.IntegerField() - holdings = AIHoldingInputSerializer(many=True) - reset = serializers.BooleanField(default=False) - - class AIUpdateResultSerializer(serializers.Serializer): stock_code = serializers.CharField() quantity = serializers.FloatField()