Files

51 lines
2.0 KiB
Python

"""商品中心序列化器(async 兼容)。"""
from rest_framework import serializers
from apps.core.serializers import AsyncModelSerializer
from .models import Category, Brand, Unit, Product
class CategorySerializer(AsyncModelSerializer):
parent_code = serializers.CharField(source="parent.code", read_only=True, default=None)
class Meta:
model = Category
fields = [
"id", "code", "name", "parent_code", "sort_order",
"is_deleted", "created_at", "updated_at",
]
read_only_fields = ["id", "created_at", "updated_at"]
class BrandSerializer(AsyncModelSerializer):
class Meta:
model = Brand
fields = ["id", "code", "name", "logo_url", "is_deleted", "created_at", "updated_at"]
read_only_fields = ["id", "created_at", "updated_at"]
class UnitSerializer(AsyncModelSerializer):
class Meta:
model = Unit
fields = ["id", "code", "name", "is_base", "is_deleted", "created_at", "updated_at"]
read_only_fields = ["id", "created_at", "updated_at"]
class ProductSerializer(AsyncModelSerializer):
category_code = serializers.CharField(source="category.code", read_only=True, default=None)
brand_code = serializers.CharField(source="brand.code", read_only=True, default=None)
base_unit_code = serializers.CharField(source="base_unit.code", read_only=True, default=None)
base_unit_name = serializers.CharField(source="base_unit.name", read_only=True, default=None)
class Meta:
model = Product
fields = [
"id", "code", "name", "spec", "barcode",
"category_code", "brand_code", "base_unit", "base_unit_code", "base_unit_name",
"cost_price", "sale_price", "min_sale_price", "tax_rate",
"is_batch_managed", "shelf_life_days",
"status", "ext_data", "source_channel",
"is_deleted", "created_at", "updated_at",
]
read_only_fields = ["id", "created_at", "updated_at"]