42

두 링크 된 모델의 데이터를 포함하여 Django Rest Framework에서 HttpResponse를 반환하려고합니다. 모델은 다음과 같습니다Django Rest Framework - 시리얼 라이저에서 관련 모델 필드 가져 오기

class Wine(models.Model): 

    color = models.CharField(max_length=100, blank=True) 
    country = models.CharField(max_length=100, blank=True) 
    region = models.CharField(max_length=100, blank=True) 
    appellation = models.CharField(max_length=100, blank=True) 

class Bottle(models.Model): 

    wine = models.ForeignKey(Wine, null=False) 
    user = models.ForeignKey(User, null=False, related_name='bottles') 

내가 관련된 와인의 정보를 포함하는 병 모델의 시리얼을 가지고 싶습니다.

내가 시도 : 작동하지 않는

class BottleSerializer(serializers.HyperlinkedModelSerializer): 
    wine = serializers.RelatedField(source='wine') 

    class Meta: 
     model = Bottle 
     fields = ('url', 'wine.color', 'wine.country', 'user', 'date_rated', 'rating', 'comment', 'get_more') 

.

어떻게 할 수 있습니까?

감사합니다 :)과

+0

감사합니다, 나는 거의 다입니다. @ tom-christie가 객체 자체를 가져 오는 작업을 설명하지만 Wine 객체의 모든 필드를 가져올 수 없습니다. – bpipat

+0

'RelatedField' 인수로'source = '*''를 사용해보십시오. – mariodev

+0

여전히 쿼리 결과에 유니 코드 이름이 표시됩니다. 그리고 필드에서 wine.color를 시도해도 작동하지 않습니다. source = '*'는 무엇을 변경합니까? – bpipat

답변

49

간단한, 필드는 그것을 해결로 WineSerializer를 추가. 와

class BottleSerializer(serializers.HyperlinkedModelSerializer): 
    wine = WineSerializer(source='wine') 

    class Meta: 
     model = Bottle 
     fields = ('url', 'wine', 'user', 'date_rated', 'rating', 'comment', 'get_more') 

: 도움말 @mariodev에 대한

class WineSerializer(serializers.HyperlinkedModelSerializer): 

    class Meta: 
     model = Wine 
     fields = ('id', 'url', 'color', 'country', 'region', 'appellation') 

감사합니다 :) 이것에 대한

+0

다행 이네. 또한,'WineSerializer' 클래스가 무엇을 나타내는 지 설명해 주시겠습니까? 그럼 명확한 답을 얻으실 수 있습니까? – mariodev

+0

요청 해 주셔서 감사합니다. – bpipat

+1

이 작업을 수행했지만 오류가 발생했습니다. 'HyperlinkedRelatedField는 시리얼 라이저에서 요청을 필요로합니다. 문맥. serializer를 인스턴스화 할 때 context = { 'request': request}를 추가하십시오 .'. 내가 도대체 ​​뭘 잘못하고있는 겁니까? – arturataide

관련 문제