Django 序列化器 - 返回特定字段

Posted

技术标签:

【中文标题】Django 序列化器 - 返回特定字段【英文标题】:Django Serializer - Returning Specific Fields 【发布时间】:2017-12-23 01:55:01 【问题描述】:

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

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

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

序列化器.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】:

基本上你想返回特定问题的答案。

因此,在 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)

【讨论】:

以上是关于Django 序列化器 - 返回特定字段的主要内容,如果未能解决你的问题,请参考以下文章

Django REST API:使特定权限级别的字段只读

如何使用 django-rest-framework 中的序列化器将相似数据合并到自定义字段中?

我可以将单个 Django 模型字段拆分为多个 Django Rest Framework 序列化器字段吗?

如何从序列化器字段订购 django rest 框架查询集?

序列化器上的 Django Rest Framework 条件字段

django rest 框架:从序列化器 validate() 方法设置字段级错误