from .models import * from rest_framework import serializers class ProductChatSerializer(serializers.ModelSerializer): price = serializers.SerializerMethodField() class Meta: model = ProductModel fields = ['name', 'description', 'price', 'in_stock', 'discount', ] def get_price(self, obj): dollor_object, _ = DollorModel.objects.get_or_create(unique_filed='unique') dollor_price = dollor_object.price dollar_to_dirham = 0.27 if dollor_price is None: raise ValidationError({"dollor_price": "The 'dollor_price' must be provided in the context for dollar pricing."}) if obj.currency == 'toman': return obj.price elif obj.currency == 'dollor': return obj.price * dollor_price elif obj.currency == 'derham': return obj.price * dollor_price * dollar_to_dirham class ProductSerializer(ProductChatSerializer): class Meta: model = ProductModel fields = "__all__" class CommentSerializer(serializers.ModelSerializer): class Meta: model = CommentModel fields = "__all__" read_only_fields = ('show', 'product') class CategorySerializer(serializers.ModelSerializer): children = serializers.SerializerMethodField() class Meta: model = CategoryModel fields = ['id', 'name', 'slug', 'icon', 'meta_title', 'meta_description', 'parent', 'children'] def get_children(self, obj): children = obj.children.all() if children.exists(): return CategorySerializer(children, many=True).data return []