DRF嵌套关系:模型关系

时间:2018-08-30 20:55:00

标签: django django-rest-framework

假设我有一个模型类,

class Estudiante(models.Model): 
    nombre = models.CharField(..)
    ...

class Invitado(models.Model): 
    invitadoi =  models.ForeignKey(Estudiante)    
    ...


class Respuesta(models.Model): 
    nombrer = models.ForeignKey(Invitado, related_name="invitado")  
    ...

如何创建一个Respuesta序列化程序并在json结果中获取nombre模型的Estudiante字段?

2 个答案:

答案 0 :(得分:1)

在序列化程序中使用 source='nombrer.invitadoi.nombre'

class RespuestaSerializer(serializers.ModelSerializer):
    nombre = serializers.CharField(source='nombrer.invitadoi.nombre')

    class Meta:
        fields = ('nombre',)  # other fields
        model = Respuesta

答案 1 :(得分:0)

您可以尝试这样:

class RespuestaSerializer(serializers.ModelSerializer):
     nombre_estudiante = serializers.SerializerMethodField()

     def get_nombre_estudiante(self, obj):
        if obj.nombrer and obj.nombrer.invitadoi:
            return obj.nombrer.invitadoi.nombre

    class Meta:
        model = Respuesta
        fields = ['nombre_estudiante']