Django REST Framework의 모델 직렬 변환기는 ID 정수 게시를 허용하여 외래 키 관계를 처리합니다. 할당 목적으로. 그러나 이 동작을 중첩된 직렬 변환기로 확장하면 특히 기존 데이터베이스 개체만 할당할 때 문제가 발생합니다.
기본 지원이 없는 경우 다음을 수행할 수 있습니다. 중첩된 하위 데이터를 포함하도록 상위 직렬 변환기의 to_representation()을 재정의합니다.
class ParentSerializer(ModelSerializer): def to_representation(self, instance): response = super().to_representation(instance) response['child'] = ChildSerializer(instance.child).data return response
이 접근 방식은 간단하고 효과적인 솔루션을 제공합니다. 중첩된 하위 항목이 있는 상위 인스턴스를 생성하고 읽는 데 사용됩니다.
보다 일반화된 처리를 위해 사용자 정의 직렬 변환기 필드를 활용할 수 있습니다.
class RelatedFieldAlternative(serializers.PrimaryKeyRelatedField): def __init__(self, **kwargs): ... def use_pk_only_optimization(self): ... def to_representation(self, instance): ...
이를 정의하여 필드를 상위 직렬 변환기에 추가하고 직렬 변환기를 하위 직렬 변환기 클래스로 설정하면 단일 키를 사용하여 외래 키 할당을 수행할 수 있습니다. key:
class ParentSerializer(ModelSerializer): child = RelatedFieldAlternative(queryset=Child.objects.all(), serializer=ChildSerializer)
이 일반 방법의 장점은 이 동작을 요구하는 여러 직렬 변환기에 적용할 수 있어 각각에 대한 사용자 정의 필드 및 방법의 필요성이 줄어든다는 것입니다.
위 내용은 Django REST 프레임워크에서 중첩된 외래 키를 할당하는 방법: 단순화된 접근 방식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!