ManyToManyField を別のモデルに持つモデルがあります。特定のレコードに関するすべての情報 (他のモデルからの関連情報を含む) を JSON で取得したいと考えています。
質問を投稿する前にこれを読みましたが、探しているものとは異なります。ピストンは使いません。
models.py
class Subject(models.Model):
description = models.CharField(max_length=200)
def __unicode__(self):
return self.description
class Practice(models.Model):
title = models.CharField(max_length=200)
main_subject = models.ForeignKey(to=Subject)
related_subjects = models.ManyToManyField(to=Subject, related_name="practices")
def __unicode__(self):
return "%s" % (self.title)
Practiceインスタンスのリストを json 形式で返す一般的なリスト ビューを実装しました...
listviews.py
class PracticeListView(ListView):
def get_queryset(self):
return Practice.objects.all()
class PracticeListViewJSON(PracticeListView):
def get(self, request, *args, **kwargs):
queryset = self.get_queryset()
json_serializer = serializers.get_serializer("json")()
data = json_serializer.serialize(queryset, ensure_ascii=False)
return HttpResponse(data, content_type="application/json")
しかし、json データはサブジェクトの説明の値をもたらしませんが、ID としての参照だけをもたらします。
json
[{"pk": 1, "model": "app.pratice", "fields": {"related_subjects": [2, 4]}}]
このようなリターンを得るにはどうすればよいですか
[{"pk": 1, "model": "app.pratice",
"fields": {"related_subjects": ["model": "app.subject",
"fields": {"description": "description of the subject #1"},
"model": "app.subject",
"fields": {"description": "description of the subject #2"},
...
]