Django Serializer - 返回特定字段

时间:2017-12-23 01:55:02

标签: json django orm django-rest-framework

我想从我的模型中返回一个特定字段,例如,该字段具有特定的外键。

如果我有一个问题模型,并且我有一个答案模型,而答案有一个问题的外键,我想返回与问题外键对应的答案字段

views.py(现在它返回所有内容)

class FindAnswer(APIView):

    def get(self, request):
        answer = Answer.objects.all()
        serializer = AnswerSerializer(answer, many=True)
        return Response(serializer.data)

    def post(self):
        pass

serializers.py

from rest_framework import serializers
from .models import *

class AnswerSerializer(serializers.ModelSerializer):

    class Meta:
        model = Answer
        fields = '__all__'

models.py

class Question(models.Model):
    question_text = models.CharField(max_length=256)
    exam = models.ForeignKey(Exam)

    def __str__(self):
        return self.question_text


class Answer(models.Model):
    text = models.CharField(max_length=128)
    question = models.ForeignKey(Question)

    def __str__(self):
        return self.text

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

基本上你想要回答一个特定的问题。

因此,在findAnswer上,您需要在get中传递问题的ID号并相应地过滤您的答案。但是我的答案假设您可以有0个或更多答案。

def get(self, request, pk):
    answer = Answer.objects.filter(question__id=pk)
    serializer = AnswerSerilizer(answer, many=True)
    return Response(serilizer.data)