I need to be able to access the values of the fields related to a certain model.
I have the following in my activity / models.py
from django.db import models
from metodologia.models import Metodologia
from competencia.models import Competencia
from resultado_aprendizaje.models import Resultado_aprendizaje
from django.contrib.auth.models import User
from nivel.models import Nivel
# Create your models here.
class Actividad(models.Model):
nombre = models.CharField(max_length=100)
objetivo = models.TextField(null=True, blank=True)
descripcion = models.TextField(null=True, blank=True)
entrega = models.TextField(null=True, blank=True)
fecha = models.DateField(blank=True, null=True)
aprobado = models.BooleanField(default=False)
en_revision = models.BooleanField(default=True)
hecho = models.BooleanField(default=False)
documento_adjunto = models.FilePathField(blank=True, null=True)#para adjuntar documento que contiene la planificacion detallada
metodologia = models.ForeignKey(Metodologia, on_delete=models.SET_NULL, blank=True, null=True)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False, null=True)
lastModification = models.DateTimeField(auto_now_add=False, auto_now=True, null=True)
def __str__(self):
return self.nombre
def __unicode__(self):
return self.nombre
class CompetenciaPropuesta(models.Model):
competencia = models.ForeignKey(Competencia, on_delete=models.SET_NULL, null=True)
actividad = models.ForeignKey(Actividad, related_name='competenciaspropuestas' ,on_delete=models.SET_NULL, null=True)
nivel = models.ForeignKey(Nivel, on_delete=models.SET_NULL, blank=True, null=True)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False, null=True)
lastModification = models.DateTimeField(auto_now_add=False, auto_now=True, null=True)
def __str__(self):
return '%s: %s' % (self.competencia.nombre, self.nivel.valor)
def __unicode__(self):
return '%s: %s' % (self.competencia.nombre, self.nivel.valor)
class Resultado_aprendizajePropuesto(models.Model):
resultado_aprendizaje = models.ForeignKey(Resultado_aprendizaje, on_delete=models.SET_NULL, blank=True, null=True)
actividad = models.ForeignKey(Actividad, related_name='resultadosaprendizajespropuestos' ,on_delete=models.SET_NULL, null=True)
nivel = models.ForeignKey(Nivel, on_delete=models.SET_NULL, blank=True, null=True)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False, null=True)
lastModification = models.DateTimeField(auto_now_add=False, auto_now=True, null=True)
def __str__(self):
return '%s: %s' % (self.resultado_aprendizaje.nombre, self.nivel.valor)
def __unicode__(self):
return '%s: %s' % (self.resultado_aprendizaje.nombre, self.nivel.valor)
The model "CompetenciaPropuesta" is related to my competition / models.py
from django.db import models
from curso.models import Curso
from categoria.models import Categoria
# Create your models here.
class Competencia(models.Model):
nombre = models.CharField(max_length=100)
descripcion = models.TextField(null=True, blank=True)
categoria = models.ForeignKey(Categoria, on_delete=models.SET_NULL, null=True)
cursos = models.ForeignKey(Curso, on_delete=models.SET_NULL, null=True, blank=True)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False, null=True)
lastModification = models.DateTimeField(auto_now_add=False, auto_now=True, null=True)
def __str__(self):
return self.nombre
def __unicode__(self):
return self.nombre
And the Model "Proposed Learning Result" is related to my learning_product / models.py
from django.db import models
# Create your models here.
class Resultado_aprendizaje(models.Model):
nombre = models.CharField(max_length=100)
descripcion = models.TextField(null=True, blank=True)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False, null=True)
lastModification = models.DateTimeField(auto_now_add=False, auto_now=True, null=True)
def __str__(self):
return self.nombre
def __unicode__(self):
return self.nombre
Now, each model is serialized in the following way:
from rest_framework import serializers
from .models import *
from metodologia.serializers import MetodologiaSerializer
from competencia.serializers import CompetenciaSerializer
class CompetenciaPropuestaSerializer(serializers.ModelSerializer):
class Meta:
model = CompetenciaPropuesta
fields = ('id','competencia', 'actividad', 'nivel', 'timestamp', 'lastModification', )
class Resultado_aprendizajePropuestoSerializer(serializers.ModelSerializer):
class Meta:
model = Resultado_aprendizajePropuesto
fields = '__all__'
class ComentarioSerializer(serializers.ModelSerializer):
class Meta:
model = Comentario
fields = '__all__'
class ActividadSerializer(serializers.ModelSerializer):
metodologia = MetodologiaSerializer(many=False, read_only=False)
competenciaspropuestas = serializers.StringRelatedField(many=True, read_only=False)
resultadosaprendizajespropuestos = serializers.StringRelatedField(many=True, read_only=False)
class Meta:
model = Actividad
fields = ('id','nombre', 'objetivo', 'descripcion', 'entrega', 'fecha', 'aprobado', 'en_revision', 'hecho', 'documento_adjunto', 'metodologia', 'competenciaspropuestas', 'resultadosaprendizajespropuestos' , 'timestamp', 'lastModification', )
The problem is that I need to get the instances related to my activity in JSON, but my activity JSON returns a string of the instance corresponding to the model "CompetenceProposal" and "Results_Programming".
My JSON is as follows:
[{"id":2,"nombre":"¿Qué es la Dirección de Proyectos?","objetivo":"","descripcion":"Ver video de lo que es la dirección de proyectos.\r\n\r\nLink del video: https://www.youtube.com/watch?v=MlyrriEzx3o","entrega":"","fecha":"2018-10-24","aprobado":false,"en_revision":true,"hecho":false,"documento_adjunto":"","metodologia":{"id":2,"nombre":"Tradicional","descripcion":"sin definir","timestamp":"2018-10-08T18:16:58.020307Z","lastModification":"2018-10-08T18:16:58.020307Z"},"competenciaspropuestas":["Éxito en la Dirección de Proyectos: 1","Cambios: 2"],"resultadosaprendizajespropuestos":["Formular y evaluar proyectos de tecnologías de información: Básico"],"timestamp":"2018-10-08T18:56:43.729047Z","lastModification":"2018-10-25T18:25:57.419596Z"},{"id":3,"nombre":"EDT","objetivo":"Comprender y aplicar la herramienta EDT en un proyecto simple","descripcion":"Realizar EDT del desarrollo de una app móvil para hacer compras de artículos gamer PC","entrega":"En papel, durante la clase - 20 minutos para desarrollarlo","fecha":"2018-12-28","aprobado":true,"en_revision":false,"hecho":false,"documento_adjunto":"","metodologia":{"id":2,"nombre":"Tradicional","descripcion":"sin definir","timestamp":"2018-10-08T18:16:58.020307Z","lastModification":"2018-10-08T18:16:58.020307Z"},"competenciaspropuestas":["Estructuras de proyectos: 4","Alcance y entregables: 4","Tiempo y fases de los proyectos: 4"],"resultadosaprendizajespropuestos":["Administrar y gestionar proyectos informáticos: Avanzado"],"timestamp":"2018-10-23T15:10:47.497599Z","lastModification":"2018-10-23T15:10:47.497599Z"}]
So from the Frontend I can not easily access the level and name fields of each model, since it returns a string of characters.
Thanks for the help ...