【发布时间】:2018-12-22 05:58:47
【问题描述】:
我有一个名为 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,)
【问题讨论】:
-
你的模型是什么样的?
-
coupon = models.ForeignKey('carts.Coupon', related_name='carts', on_delete=models.SET_NULL, null=True, )
标签: python django rest api django-rest-framework