2014-11-11 4 views
0

다른 모델에 외래 키 배열을 저장하는 사용자 정의 "ArrayField"(Postgres 배열 필드 용) 모델이 있습니다. Django는 관계를 강제하지 않지만, 내가 거기에 넣는 것은 외래 키입니다. 숫자가 아닌 강제 바 외국 키를 어디에Django REST Framework로 외래 키 배열을 직렬화

class Foo(model): 
    bars = ArrayField(models.IntegerField()) 

class Bar(model): 
    blah = models.CharField() 

그래서 '바'필드의 값은 [3,64,7,34,...] 같다.

{ "foo" : { "bars" : [ {"blah":"asdf"}, 
         {"blah":"asdf"} 
         ] 
      } 
} 

내가 그가 직렬로 표현되는 방법을 알아내는 데 문제 :

class BarSerializer(serializers.ModelSerializer): 
    class Meta: 
     fields = ('blah') 

    blah  = serializersCharField() 


class FooSerializer(serializers.ModelSerializer): 
    class Meta: 
     fields = ('bars') 

    # bars  = BarSerializer(many=True) 
    bars  = SomeSpecialCustomField() #? 
, FOOS을 렌더링 할 때, 나는 장고 REST 프레임 워크를 사용하여이 필드에 표시되는 관련 개체를 렌더링하고 싶습니다

렌더링시 JSON을 어떻게 얻을 수 있습니까?

답변

1

은이 주변에 연주 해보십시오 :

class SomeSpecialCustomField(serializers.Field): 

    def to_native(self, value): 
     queryset = Bar.objects.filter(pk__in=value) 
     serializer = BarSerializer(queryset, many=True) 
     return serializer.data 

당신이 체크처럼 적절한 검증을 넣어 있는지 확인 값이 목록 등

경우
관련 문제