51 lines
2.0 KiB
Python
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"]
|