2
class BeneficiarySerializer(serializers.Serializer):
    class Meta:
        model = Beneficiary
        fields ='__all__'

    def create(self, validated_data):
        try:
            available = Beneficiary.objects.get(coupon_code=validated_data['coupan_code'])
            raise serializers.ValidationError("The provided coupon code is already utilized")
        except:
            return super().create(validated_data)


class Coupon(models.Model):
    sl_no = models.CharField(max_length=50, primary_key=True)
    c_code = models.CharField(max_length=50, blank=True)

    def __str__(self):
        return self.c_code


class Beneficiary(models.Model):
    name = models.CharField(max_length=50)
    coupon_code = models.ForeignKey(Coupon, on_delete=models.CASCADE)

    def __str__(self):
        return self.name

目的は、クーポンを 1 人だけに発行することです。その場合、同じクーポン コードが別の人に発行された場合、シリアライザーは、キーが誰かに発行されたというエラーを発生させます。コードをtryに入れて、検証が失敗するたびに、同じクーポンコードが多くの人に割り当てられている場合、objects.getを使用するとtry:ステートメントが返されます。この状況に対処するための適切な方法またはその他の方法を除いて、私がtry:を使用していない場合はお知らせください

4

1 に答える 1