>백엔드 개발 >파이썬 튜토리얼 >Django REST 프레임워크에서 중첩된 외래 키를 할당하는 방법: 단순화된 접근 방식

Django REST 프레임워크에서 중첩된 외래 키를 할당하는 방법: 단순화된 접근 방식

Susan Sarandon
Susan Sarandon원래의
2024-11-25 13:17:15357검색

How to Assign Nested Foreign Keys in Django REST Framework: A Simplified Approach

중첩 외래 키 할당: 단순화된 접근 방식

질문

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.