from rest_framework import serializers from django.contrib.auth import get_user_model from boxofficefantasy.models import Movie, Season from draft.models import DraftSession, DraftSessionSettings, DraftPick User = get_user_model() class UserSerializer(serializers.ModelSerializer): full_name = serializers.SerializerMethodField() class Meta: model = User fields = ("username", "first_name", "last_name", "email", "full_name") def get_full_name(self, obj): return f"{obj.first_name} {obj.last_name}".strip() class MovieSerializer(serializers.ModelSerializer): class Meta: model = Movie # fields = ("id", "imdb_id", "title", "year", "poster_url") fields = ("id", "title") class DraftSessionSettingsSerializer(serializers.ModelSerializer): class Meta: model = DraftSessionSettings fields = ("starting_budget",) # add any others you have class DraftPickSerializer(serializers.ModelSerializer): user = UserSerializer(read_only=True) movie = MovieSerializer(read_only=True) class Meta: model = DraftPick fields = ("id", "movie", "winner", "bid_amount") class DraftSessionSerializer(serializers.ModelSerializer): participants = UserSerializer(many=True, read_only=True) movies = MovieSerializer(many=True, read_only=True) settings = DraftSessionSettingsSerializer(read_only=True) draft_picks = DraftPickSerializer(many=True, read_only=True) def hashid(self, obj): return f"{obj.hashid}".strip() class Meta: model = DraftSession # include whatever else you want (phase, season info, hashed_id, etc.) fields = ( "id", "hashid", "season", # will use __str__ unless you customize "participants", "movies", "settings", "draft_picks", # optionally include server time for client clock sync )