我正在使用django1.11和djangorest框架的当前版本3.8.2开发一个web系统
我在这个项目中为我的模型提供JSON时遇到了一个问题。我需要传递一个包含特定属性的JSON
我将举例说明我的serializers.py,以便更容易理解我的问题
class LikertSerializerModel(serializers.ModelSerializer):
class Meta:
model = Likert
fields = ('id', 'escala')
class RespostaSerializerModel(serializers.ModelSerializer):
likerts = LikertSerializerModel(many = True, read_only = True)
class Meta:
model = Resposta
fields = ('id', 'resposta','tipo', 'foto', 'pergunta', 'qtd_escolhida', 'classificacao_escala', 'data', 'likerts')
class PerguntaSerializerModel(serializers.ModelSerializer):
respostas = RespostaSerializerModel(read_only=True ,many=True)
class Meta:
model = Pergunta
fields = ('id', 'pergunta', 'tipo_questao', 'questionario', 'respondida', 'data_inicial', 'data_final',
'obrigatoria', 'outros', 'ordem', 'qtd_max_caracteres', 'respostas')
class QuestionarioSerializerModel(serializers.ModelSerializer):
entrevistadores = UsuarioSerializer(many = True, read_only = True)
sub_administrador = UsuarioSerializer(read_only= True)
perguntas = PerguntaSerializerModel(many = True, read_only = True)
class Meta:
model = Questionario
fields = ('id', 'titulo', 'descricao', 'data', 'duracao', 'localizacao', 'sub_administrador', 'entrevistadores', 'perguntas')
问题:请参阅,在PerguntaSerializerModel中,我有一个字段“respostas”。问题是,我只想传递给Pergunta对象,Resposta对象有一个“tipo”属性值为“alt”并且与Pergunta对象链接
PS:如果您需要解释这些类是如何链接的,那么就这样(我们可以忽略Likert对象,因为它对问题没有用处):
一个响应对象通过一个ForeignKey链接到一个Pergunta对象,一个Pergunta对象通过一个ForeignKey链接到一个问题对象
一个问题对象可以有一个或多个Pergunta对象,一个Pergunta对象可以有一个或多个Resposta对象
当您在rest URL中执行GET时,最终的JSON将从Questionario对象开始,并将级联到最后一个Pergunta对象
请帮我找到一个答案,我无法找到一个在其余的文档,因为我不知道我需要寻找
致以最诚挚的问候
你需要的是一个SerializerMethodField()。你可以通读这些文件来获得更多的信息
在序列化程序
PerguntaSerializerModel
上创建一个方法,该方法基于属性tipo
返回Resposta
对象的筛选查询集像这样的方法应该很管用:
如果有用的话请告诉我
相关问题 更多 >
编程相关推荐