HiPhone_BE/market/serializers.py
2023-06-23 02:09:45 +09:00

103 lines
2.2 KiB
Python

from rest_framework import serializers
from rest_framework.serializers import ModelSerializer
from market.models import (
Brand,
Product,
Post,
Image,
)
class ProductSerializer(ModelSerializer):
class Meta:
model = Product
fields = ("id", "name", "brand")
depth = 1
class ProductListSerializer(ModelSerializer):
class Meta:
model = Product
fields = ("id", "name")
class BrandSerializer(ModelSerializer):
products = ProductListSerializer(many=True, read_only=True)
class Meta:
model = Brand
fields = ["id", "name", "products"]
class BrandListSerializer(ModelSerializer):
class Meta:
model = Brand
fields = "__all__"
class ImageSerializer(ModelSerializer):
class Meta:
model = Image
fields = ("image",)
class PostListSerializer(ModelSerializer):
product = ProductListSerializer(read_only=True)
nickname = serializers.CharField(source="author.nickname")
image = serializers.SerializerMethodField()
class Meta:
model = Post
fields = (
"id",
"product",
"price",
"text",
"nickname",
"status",
"written_at",
"image",
)
def get_image(self, obj):
first_image = obj.images.first()
return ImageSerializer(
instance=first_image, context=self.context
).data["image"]
class PostCreateSerializer(ModelSerializer):
class Meta:
model = Post
fields = (
"product",
"price",
"text",
)
class PostStatusUpdateSerializer(ModelSerializer):
class Meta:
model = Post
fields = ("status",)
class PostSerializer(ModelSerializer):
product = ProductListSerializer(read_only=True)
nickname = serializers.CharField(source="author.nickname")
images = ImageSerializer(many=True, read_only=True)
class Meta:
model = Post
fields = (
"id",
"product",
"price",
"text",
"nickname",
"status",
"written_at",
"images",
)