diff --git a/apps/qm/serializers.py b/apps/qm/serializers.py index b87911d3..e5639e2c 100644 --- a/apps/qm/serializers.py +++ b/apps/qm/serializers.py @@ -81,6 +81,30 @@ class QctMatSerializer(CustomModelSerializer): class Meta: model = QctMat fields = '__all__' + + def create(self, validated_data): + qct:Qct = validated_data.get("qct") + use_for_in = validated_data.get("use_for_in") + use_for_out = validated_data.get("use_for_out") + if use_for_in: + if QctMat.objects.filter(qct=qct, material=validated_data["material"], use_for_in=True, qct__is_deleted=False).exists(): + raise ValidationError("存在该物料的加工前检验表") + if use_for_out: + if QctMat.objects.filter(qct=qct, material=validated_data["material"], use_for_out=True, qct__is_deleted=False).exists(): + raise ValidationError("存在该物料的检验表") + return super().create(validated_data) + + def update(self, instance, validated_data): + qct:Qct = validated_data.get("qct") + use_for_in = validated_data.get("use_for_in") + use_for_out = validated_data.get("use_for_out") + if use_for_in: + if QctMat.objects.filter(qct=qct, material=validated_data["material"], use_for_in=True, qct__is_deleted=False).exclude(pk=instance.pk).exists(): + raise ValidationError("存在该物料的加工前检验表") + if use_for_out: + if QctMat.objects.filter(qct=qct, material=validated_data["material"], use_for_out=True, qct__is_deleted=False).exclude(pk=instance.pk).exists(): + raise ValidationError("存在该物料的检验表") + return super().update(instance, validated_data) class QctDetailSerializer(CustomModelSerializer): qct_testitems = QctTestItemSerializer(many=True, read_only=True)