feat: qctmat create update 校验唯一

This commit is contained in:
caoqianming 2026-03-06 11:05:03 +08:00
parent bf5cfbe7e6
commit 8b22084c0a
1 changed files with 24 additions and 0 deletions

View File

@ -81,6 +81,30 @@ class QctMatSerializer(CustomModelSerializer):
class Meta: class Meta:
model = QctMat model = QctMat
fields = '__all__' 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): class QctDetailSerializer(CustomModelSerializer):
qct_testitems = QctTestItemSerializer(many=True, read_only=True) qct_testitems = QctTestItemSerializer(many=True, read_only=True)