0
models.py 처음직렬 검증 방법
class Customer(models.Model):
name = models.CharField(max_length=128)
email = models.EmailField(null=True, blank=True)
phone = models.CharField(max_length=128)
serializers.py
class CustomerSerializer(serializers.ModelSerializer):
class Meta:
model = Customer
fields = ("name", "email", "phone")
extra_kwargs = {
"email":{"required":True},
}
def validate_email(self, email):
qs = Customer.objects.filter(email__iexact=email)
if qs.exists():
raise serializers.ValidationError("This email is already existed")
return email
def validate_phone(self, phone):
qs = Customer.objects.filter(phone__iexact=phone)
if qs.exists():
raise serializers.ValidationError("This Phone is already existed")
return phone
views.py
class CustomerApi(SerializerMixin, APIView):
......
.........
def post(self, request):
serializer = CustomerSerializer(data=request.data, many=True)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(
serializer.errors,
status = status.HTTP_400_BAD_REQUEST
)
JSON
대해 개체에서 검증되지[
{
"phone": "123",
"name": "name1",
"email": "[email protected]"
},
{
"phone": "123",
"name": "nam32",
"email": "[email protected]"
}
]
위 고객 json 목록에는 이메일과 전화가 같은 두 개의 개체가 있습니다. 하지만 처음 만들 경우 전자 메일과 전화 (유효성 검사 방법이 작동하지 않음)의 유효성을 검사하지 않습니다. 하지만 일단 만들어지면 두 번째로 동일한 목록으로 고객을 만들려고 할 때 유효성 검사 방법이 예상대로 작동합니다. 문제를 추적 할 수 없습니다.
감사합니다. 유효성이 검사 된 데이터는 한 번에 하나의 dict을 제공합니다. – Thameem
좋은 답변이지만 검증 된 데이터는 한 번에 하나의 사전 만 제공합니다. 그것을 할 수있는 다른 방법이 있습니까? 나는 방법을 창조해서 그것을 또한 시도했다. 하지만 문제는 한 번에 하나의 dict을주는 시점입니다. – Thameem