2

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"},
                                                    ...
]
4

0 に答える 0