Python3.7
Django2
Model
Python
1class Product(models.Model): 2 name = models.CharField(max_length=255) 3 created_at = models.DateTimeField(auto_now_add=True) 4 updated_at = models.DateTimeField(auto_now=True) 5 6 def __str__(self): 7 return self.name 8 9 10class Music(models.Model): 11 name = models.CharField(max_length=255) 12 parent_product = models.ForeignKey(Product, verbose_name="親商品", on_delete=models.CASCADE, 13 related_name="parent_product") 14 created_at = models.DateTimeField(auto_now_add=True) 15 updated_at = models.DateTimeField(auto_now=True) 16 17 def __str__(self): 18 return self.name
ViewSet
Python
1class ProductViewSet(viewsets.ModelViewSet): 2 queryset = Product.objects.all() 3 serializer_class = ProductSerializer 4 5 6class MusicViewSet(viewsets.ModelViewSet): 7 queryset = Music.objects.all() 8 serializer_class = MusicSerializer
Serializer
Python
1class MusicSerializer(serializers.ModelSerializer): 2 class Meta: 3 model = Music 4 fields = ('name', 'parent_product',) 5 6 7class ProductSerializer(serializers.ModelSerializer): 8 class Meta: 9 model = Product 10 fields = ('name',)
現在このような状態になっており、個々のProductを取得すると以下のようなJsonが帰ってきます。
GET /api/products/1/ HTTP 200 OK Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS Content-Type: application/json Vary: Accept { "name": "AikatsuTest" }
このプロダクトのエンドポイントにアクセスした場合に、参照されているMusicモデルの内容も含めたいのですがやり方がわかりません。
具体的には
{ "name": "AikatsuTest", "Musics": [ { "name": "Track 1", }, { "name": "Track 2", }, { "name": "Track 3", }, { "name": "Track 4", } ] }
このような感じで返すようにしたいのですが、現在のモデルの状態で可能なのでしょうか?
皆さんの知恵をお貸し頂ければと思います。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。