"""商品中心序列化器(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"]