Serializers의 create()에서 ValidationError 발생 중지
2971 단어 pythondjangovalidation
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ["username", "password", "email"]
def create(self, validated_data):
username = validated_data.get("username")
if username:
try:
User.objects.get(username=username)
raise ValidationError({"user": "This user already exists."})
except ObjectDoesNotExist:
pass
return User.objects.create(**validated_data)
실제로 코드에 어떤 문제가 있습니까?
글쎄, 우리는
create()
또는 validate()
메서드에서 데이터 유효성 검사 작업을 수행하는 대신 validate_field()
메서드에서 ValidationError를 발생시키고 있습니다. 🥶그 의미는 무엇입니까?🤔
우선, 우리는 DRF 규칙을 위반하고 잘못된 코드를 작성하고 있습니다. 문자 그대로 이 작업을 수행하기 위해 추가 요금을 부과할 수 있는 기능이 있지만 사용되지 않는다는 사실은 꽤 나쁜 패턴입니다.
둘째, 성능 문제입니다. 데이터의 유효성 검사는 실제로 데이터 생성, 업데이트 및 삭제 전에 이루어집니다.
validate()
또는 validate_field()
메서드에 데이터 유효성 검사를 작성하면 CRUD 메서드를 훨씬 빠르게 만들 수 있습니다.🚀bloggu.io을(를) 사용하여 게시된 기사. 무료로 사용해 보세요.
Reference
이 문제에 관하여(Serializers의 create()에서 ValidationError 발생 중지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/koladev/stop-raising-validationerror-on-create-on-serializers-2kgb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)