2014-07-17 3 views
4

제가 알고 있듯이 모델 관리자의 get_by_natural_key는 직렬화 해제에 사용되고 natural_key는 직렬화에 사용됩니다. 사실입니까? 차이점이 없다면?get_by_natural_key와 natural_key의 차이점

또한 --natural-foreign 및 --natural-primary 키를 항상 제공해야합니까? 자연 키를 통해 직렬화/직렬화를 강제로 수행 할 수있는 방법이 있습니까?

답변

2

Django는 직렬화에 get_by_natural_key을 사용하고 직렬화에는 natural_key을 사용합니다.

설명서에 언급 된대로 두 가지를 모두 정의 할 필요는 없습니다. 하나만 안전하게 사용할 수 있습니다.

코드 내에 자연 키를 사용하여 모델을 serialize해야하는 경우 serializers.serialize()use_natural_foreign_keys=True 및/또는 use_natural_primary_keys=True을 사용해야합니다. 당신이 직렬화해야하는 경우

/자연 키를 사용하여 일부 개체를 역 직렬화하고 admin.py dumpdata 다음 당신은 당신이 그들이 연재 될 것입니다하지 않는 경우 --natural-foreign 및/또는 --natural-primary을 통과해야/기본 (비 자연) 행동 직렬화 복원.

dumpdata의 자연어 키를 강제로 적용하려면 셸 별칭을 만들면됩니다.

고급 모델 직렬화/역 직렬화가 필요한 경우 Django REST Framework serializers과 같은 외부 구성 요소를 사용하거나 직접 작성하는 것이 좋습니다.