Files
thrillwiki_django_no_react/backend/apps/lists/serializers.py

58 lines
1.8 KiB
Python

from rest_framework import serializers
from .models import UserList, ListItem
from apps.accounts.serializers import UserSerializer
class ListItemSerializer(serializers.ModelSerializer):
class Meta:
model = ListItem
fields = [
"id",
"user_list",
"content_type",
"object_id",
"rank",
"notes",
"created_at",
"updated_at",
"content_object_data",
]
read_only_fields = ["id", "created_at", "updated_at"]
content_object_data = serializers.SerializerMethodField()
def get_content_object_data(self, obj):
"""
Return serialized data for the content object (Park or Ride).
"""
# Avoid circular imports
from apps.api.v1.parks.serializers import ParkListSerializer
from apps.api.v1.rides.serializers import RideListSerializer
from apps.parks.models import Park
from apps.rides.models import Ride
if isinstance(obj.content_object, Park):
return ParkListSerializer(obj.content_object, context=self.context).data
elif isinstance(obj.content_object, Ride):
return RideListSerializer(obj.content_object, context=self.context).data
return None
class UserListSerializer(serializers.ModelSerializer):
user = UserSerializer(read_only=True)
items = ListItemSerializer(many=True, read_only=True)
class Meta:
model = UserList
fields = [
"id",
"user",
"title",
"category",
"description",
"is_public",
"items",
"created_at",
"updated_at",
]
read_only_fields = ["id", "user", "created_at", "updated_at"]