2017-12-22 2 views
1

내 첫 번째 질문은 여기에 있습니다. 이 커뮤니티의 일원이 된 것을 기쁘게 생각합니다. 내 질문 : 저는 Python3과 django rest 프레임 워크를 사용하여 API를 만들고 있습니다.DJANGO REST의 외래 키보기

class Game(models.Model): 
    # id = models.AutoField(primary_key=True) 
    id = models.IntegerField(primary_key=True) 
    name = models.CharField(max_length=100) 
    url = models.CharField(max_length=100) 
    created_at = models.BigIntegerField() 
    updated_at = models.BigIntegerField() 
    summary = models.CharField(max_length=2000) 
    first_release_date = models.BigIntegerField() 
    category = models.SmallIntegerField() 
    cover = models.CharField(max_length=100) 

    def __str__(self): 
     return self.name 


class ReleaseDate(models.Model): 
    id = models.AutoField(primary_key=True) 
    game = models.ForeignKey(Game, on_delete=models.CASCADE) 
    created_at = models.BigIntegerField() 
    updated_at = models.BigIntegerField() 
    category = models.SmallIntegerField() 
    platform = models.SmallIntegerField() 
    date = models.BigIntegerField() 
    region = models.SmallIntegerField() 
    y = models.SmallIntegerField() 
    m = models.SmallIntegerField() 
    human = models.CharField(max_length=10) 

내가 할 거라고 게임 및 RELEASEDATE위한 시리얼 만들려면 : 나는 다음과 같은 모델을 가지고

class ReleaseDateSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = ReleaseDate 
     fields = '__all__' 


class GameSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Game 
     fields = '__all__' 

을 ... 그리고이 날을 제공 할 것이다 :

[ 
    { 
     "name": "God of war", 
     "url": "efgsd" 
    }, 
    { 
     "name": "Uncharted", 
     "url": "sgdfd" 
    }, 
    { 
     "name": "Fortnight", 
     "url": "efgsd" 
    } 
] 

어떻게하면 되나요?

[ 
    { 
     "name": "God of war", 
     "url": "efgsd" 
     "release_dates": "[ 
      {..}, 
      {..} 
     ]" 
    }, 
    { 
     "name": "Uncharted", 
     "url": "sgdfd" 
     "release_dates": "[ 
      {..}, 
      {..} 
     ]" 
    }, 
    { 
     "name": "Fortnight", 
     "url": "efgsd" 
     "release_dates": "[ 
      {..}, 
      {..} 
     ]" 
    } 
] 

대단히 감사합니다!

drf documentation for nested serializers에서 설명한 바와 같이

답변

0

, 당신은 related_name 속성을 release_date

class Game(models.Model): 
    game = models.ForeignKey(Game, related_name = 'release_date', on_delete = models.CASCADE) 

을 포함하도록 ReleaseDate 모델

같은 당신의 game FK을 수정해야 할 다음과 같이 당신의 GameSerializer을 업데이트 할 것

class GameSerializer(serializers.ModelSerializer): 
    release_date = ReleaseDateSerializer(many = True, read_only = True) 

    class Meta: 
     model = Game 
     fields = ('name', 'url', 'release_date',) 
+0

완벽하게 작동합니다. 고맙습니다 – user9132502