from rest_framework import serializers from .models import CreditAccount, CreditLedger, CreditReservation, QuotaPolicy class CreditAccountSerializer(serializers.ModelSerializer): class Meta: model = CreditAccount fields = ["id", "balance", "reserved_balance", "currency", "updated_at"] read_only_fields = fields class CreditLedgerSerializer(serializers.ModelSerializer): # 成员展示名:优先真实姓名 → 用户名 → 邮箱;系统流水(无 user)留空 user_label = serializers.SerializerMethodField() class Meta: model = CreditLedger fields = [ "id", "user", "user_label", "project", "task", "ledger_type", "amount", "balance_after", "reason", "metadata", "created_at", ] read_only_fields = fields def get_user_label(self, obj): user = obj.user if user is None: return "" return user.first_name or user.username or user.email or "" class CreditReservationSerializer(serializers.ModelSerializer): class Meta: model = CreditReservation fields = ["id", "user", "project", "task", "amount", "status", "expires_at", "created_at"] read_only_fields = fields class QuotaPolicySerializer(serializers.ModelSerializer): class Meta: model = QuotaPolicy fields = ["id", "user", "project", "monthly_limit", "project_limit", "per_task_limit", "is_active"] read_only_fields = ["id"]