لدي نموذج اسمه Cart. سلة الشراء بها مفتاح خارجي للقسيمة.
عندما أقوم بإنشاء عربة جديدة ، يتم تشغيل بعض عمليات التحقق لمعرفة ما إذا كانت القسيمة موجودة. إذا لم يكن كذلك ، فإنها ترجع الخطأ 400 قائلة أن الكائن غير موجود. لا أريد خطأ 400 ، أحتاج إليه لمتابعة العمليات التي تعيد القسيمة كـ Null.
serializers.py
class CartSerializer(serializers.ModelSerializer):
id = serializers.UUIDField(format='hex', read_only=True)
delivery = DeliverySerializer(required=False, write_only=True)
customer = CustomerSerializer(required=False, write_only=True)
coupon = CouponSerializer(
required=False,
)
totals = serializers.SerializerMethodField()
class CouponSerializer(serializers.Serializer):
code = serializers.SlugRelatedField(
slug_field='code',
required=False,
source='coupon',
queryset=Coupon.objects.only_valid(),
)
def to_representation(self, coupon):
return {
'code': coupon.code,
'discount_amount': coupon.discount_amount,
'discount_percentage': coupon.discount_percentage,
'only_first_order': coupon.only_first_order,
}
views.py
class CartViewset(CreateModelMixin, GenericViewSet):
queryset = Cart.objects.all()
serializer_class = CartSerializer
permission_classes = (AllowAny,)