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-framework 中的序列化器将相似数据合并到自定义字段中?
我可以将单个 Django 模型字段拆分为多个 Django Rest Framework 序列化器字段吗?
如何从序列化器字段订购 django rest 框架查询集?