1
0
forked from erp-dev/erp

fix: merchant not required at customer create api

This commit is contained in:
2026-03-13 15:57:40 +08:00
parent a8e9801e15
commit 84dbb2ee10
6 changed files with 267 additions and 2 deletions

View File

@@ -136,6 +136,41 @@ class CustomerSerializer(BaseSerializer):
required=False,
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.validators = [
validator
for validator in self.validators
if not (
hasattr(validator, 'fields')
and tuple(validator.fields) == ('merchant', 'name')
)
]
def _get_request_merchant(self):
request = self.context.get('request')
try:
return request.user.employee.merchant
except AttributeError:
return None
def validate(self, attrs):
attrs = super().validate(attrs)
merchant = self._get_request_merchant() or attrs.get('merchant') or getattr(self.instance, 'merchant', None)
name = attrs.get('name', getattr(self.instance, 'name', None))
if merchant and name:
queryset = basic_models.Customer.objects.filter(merchant=merchant, name=name)
if self.instance is not None:
queryset = queryset.exclude(pk=self.instance.pk)
if queryset.exists():
raise serializers.ValidationError({
'name': '该商户下已存在同名客户。'
})
return attrs
class Meta:
model = basic_models.Customer
fields = '__all__'