2017-12-23 6 views
0

Ich möchte ein bestimmtes Feld aus meinem Modell zurückgeben, ein Feld, das beispielsweise einen bestimmten Fremdschlüssel hat.Django Serializer - Zurückgeben bestimmter Felder

Wenn ich eine Frage Modell haben, und ich habe eine Antwort-Modell und Antwort hat einen Fremdschlüssel auf eine Frage, möchte ich die Antwort Feld zurückzukehren, die Fremdschlüssel

views.py auf die Frage entspricht (jetzt gibt es alles)

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 

Was ist der beste Weg, dies zu erreichen?

Antwort

0

Grundsätzlich möchten Sie die Antwort auf eine bestimmte Frage zurückgeben.

Also auf der findAnswer, müssen Sie die ID-Nummer der Frage im Get übergeben und filtern Sie Ihre Antworten entsprechend. Allerdings geht meine Antwort davon aus, dass Sie 0 oder mehr Antworten haben könnten.

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