2017-09-28 1 views
1

다음과 같은 상황이 있습니다. 사용자가 두 개 이상의 프로필을 가질 수 있습니다. 여기 내 모델 수업이 있습니다. 이 예와 같이 뭔가 :Django restframework : 두 모델 쿼리 세트를 직렬화하는 방법은 무엇입니까?

models.py :

class Profile: 
    name=models.Charfield() 

class UserProfile: 
    user=models.ForeignKey(User) 
    profile = models.ForeignKey(Profile) 

serializers.py : 여기

class UserSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = User 
     fields = '__all__' 

내가 JSON으로 내 모든 사용자를 반환하고있어하지만 난 싶습니다 프로파일이라는 새 필드를 추가하여 사용자가 가지고있는 모든 ID 프로파일을 리턴하십시오.

{ "id": 1, 
    "name" : "John" 
    .... 
    profiles = [1, 2] 
} 

사용자가 보유한 모든 프로필을 가져 와서 최종 JSON에 추가하려면 어떻게합니까?

답변

0

1) 단순화 관계 -이 경우 필요한 사용자 및 프로필 모델 만 필요하므로 사용자가 필요하지 않은 한 프로필 모델에서 동일한 작업을 수행 할 수 있으므로 사용자 프로필 테이블에 명시 적 관계를 저장할 필요가 없습니다. 다른 사용자와 프로필을 공유 할 수 있습니다.

2)

3 ProfileSerializer

만들기) '원본'속성 가 http://www.django-rest-framework.org/api-guide/serializers/

또 다른 정말 좋은 이러한 문서에 reffer하시기 바랍니다에 대한 참조를 제공 & 진정한 = 많은 속성 UserSerializer하는 프로파일 필드 추가 언급해야 할 것은 UserProfile을 생성하는 것이 금지되어 있고 Django의 새 버전에서는 사용자 속성을 설정하여 기본 사용자 모델을 확장 할 수 있습니다. AUTH_USER_MODEL UserSerializer에 AUTH_USER_MODEL 설정을 사용하여

3

프로필 PrimaryKeyRelatedField

로 이 필드는 읽기 - 쓰기 기본적으로 당신이 READ_ONLY 플래그를 사용하여이 동작을 변경할 수 있지만

profiles = serializers.PrimaryKeyRelatedField()

.

docs

관련 문제