Как можно перезаписать oscar api ChildProductserializer . Я следовал руководству по oscar api, как перезаписать сериализаторы, но я не могу перезаписать этот сериализатор
Oscar api Child Serializer
class ChildProductserializer(PublicProductSerializer):
"Serializer for child products"
parent = serializers.HyperlinkedRelatedField(
view_name="product-detail",
queryset=Product.objects.filter(structure=Product.PARENT),
)
# the below fields can be filled from the parent product if enabled.
images = ProductImageSerializer(many=True, required=False, source="parent.images")
description = serializers.CharField(source="parent.description")
class Meta(PublicProductSerializer.Meta):
fields = overridable(
"OSCARAPI_CHILDPRODUCTDETAIL_FIELDS",
default=(
"url",
"upc",
"id",
"title",
"structure",
# 'parent', 'description', 'images', are not included by default, but
# easily enabled by overriding OSCARAPI_CHILDPRODUCTDETAIL_FIELDS
# in your settings file
"date_created",
"date_updated",
"recommended_products",
"attributes",
"categories",
"product_class",
"price",
"availability",
"options",
),
)
My overwrite child Serializer
class ChildProductSerializer(product.ChildProductserializer):
price = serializers.SerializerMethodField()
availability = serializers.SerializerMethodField()
class Meta(product.ChildProductserializer.Meta):
fields=('url','parent','price','availability')
# 'price','availability','parent')
def get_price(self, instance):
request = self.context.get("request")
strategy = Selector().strategy(request=request, user=request.user)
ser = checkout.PriceSerializer(
strategy.fetch_for_product(instance).price,
context={'request': request})
return ser.data
def get_availability(self,instance):
request = self.context.get("request")
strategy = Selector().strategy(request=request, user=request.user)
ser = product.AvailabilitySerializer(
strategy.fetch_for_product(instance).availability,
context={'request': request}
)
return ser.data
class ProductLinkSerializer(product.ProductLinkSerializer):
price = serializers.SerializerMethodField()
availability = serializers.SerializerMethodField()
class Meta(product.ProductLinkSerializer.Meta):
fields = ('url','children')
# ,'id','children','price','title','images','description','children','structure','availability')
def get_price(self, instance):
request = self.context.get("request")
strategy = Selector().strategy(request=request, user=request.user)
ser = checkout.PriceSerializer(
strategy.fetch_for_product(instance).price,
context={'request': request})
return ser.data
def get_availability(self,instance):
request = self.context.get("request")
strategy = Selector().strategy(request=request, user=request.user)
ser = product.AvailabilitySerializer(
strategy.fetch_for_product(instance).availability,
context={'request': request}
)
return ser.data
, но даже поля Meta не работают, а поля api отображают значения по умолчанию. У меня проблема только с этим сериализатором, поскольку перезапись ProductLinkSerializer и OptionSerializer в одном файле работает нормально.