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
目的是只向一个人发放优惠券,如果相同的优惠券代码被发放给另一个人,那么在这种情况下,序列化程序应该引发并错误地将密钥发放给某人。如果我把代码放在 try 中,除非每次验证失败,相同的优惠券代码被分配给许多人,如果使用 objects.get outside try: 语句是找到返回结果。如果我没有使用 try: 除非以适当的方式或任何其他方式来处理这种情况,请告诉我