articleにcommentを紐づけた際、
articleを取得したときに関連するcommentを一緒に取得したいと考えています。
ただ、現状ですと別々に取得する方法しかわからず困っており、
望ましい出力結果のように出力する方法がありましたら教えていただけると幸いです。
望ましい出力結果
json
1{ 2 "article": [ 3 { 4 "id": 1, 5 "title": "test", 6 "body": "test", 7 "is_published": false, 8 "created": "2022-07-10T21:54:40.946Z" 9 "comments": [ 10 { 11 "comments__body": "test", 12 "comments__created": "2022-07-10T21:54:58.966Z" 13 }, 14 { 15 "comments__body": "test2", 16 "comments__created": "2022-07-10T21:55:07.366Z" 17 } 18 ], 19 } 20}
実際の出力結果
json
1{ 2 "article": [ 3 { 4 "id": 1, 5 "title": "test", 6 "body": "test", 7 "is_published": false, 8 "created": "2022-07-10T21:54:40.946Z" 9 } 10 ], 11 "comments": [ 12 { 13 "comments__body": "test", 14 "comments__created": "2022-07-10T21:54:58.966Z" 15 }, 16 { 17 "comments__body": "test2", 18 "comments__created": "2022-07-10T21:55:07.366Z" 19 } 20 ], 21}
views.py
python
1 def index(request): 2 article = Article.objects.select_related().all() 3 article_value = article.values() 4 comments_value = article.values('comments__body', 'comments__created') 5 json_encode = { 6 'article': list(article_value), 7 'comments': list(comments_value) 8 } 9 return JsonResponse(json_encode, safe=False)
models.py
python
1class Article(models.Model): 2 3 title = models.CharField(max_length=100) 4 body = models.TextField() 5 is_published = models.BooleanField(default=False) 6 created = models.DateTimeField(auto_now_add=True) 7 8 9class Comment(models.Model): 10 11 article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='comments') 12 body = models.TextField() 13 user = models.ForeignKey(get_user_model(), on_delete=models.SET_NULL, null=True) 14 created = models.DateTimeField(auto_now_add=True)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。