Регистрация таблиц django

Мне нужно соединить таблицу Alumno с Horario, как я могу сделать синтаксис? Мне нужно получить id_curso каждого Alumno, и с этим id_curso присоединить его к таблице Horario, но я не знаю, как это сделать. Я думаю, вам нужно использовать select_related или prefetch_related, которые я не очень хорошо знаю, как использовать, я пытался создать переменную для получения id_course и с этой переменной использовать фильтр, но у меня ничего не получилось

Помогите мне пожалуйста

models.py

class Alumno(models.Model):
rut_alumno = models.IntegerField(primary_key=True)
dv_alumno = models.CharField(max_length=1)
p_nombre = models.CharField(max_length=15)
s_nombre = models.CharField(max_length=15, blank=True, null=True)
ap_paterno = models.CharField(max_length=15)
ap_materno = models.CharField(max_length=15, blank=True, null=True)
fecha_nac = models.DateField()
genero = models.CharField(max_length=1)
direccion = models.CharField(max_length=25, blank=True, null=True)
nivel_socio = models.CharField(max_length=10)
id_examenes = models.OneToOneField('ExamenCono', models.DO_NOTHING, db_column='id_examenes')
rut_apoderado = models.ForeignKey('Apoderado', models.DO_NOTHING, db_column='rut_apoderado')
id_colegio = models.ForeignKey('Colegio', models.DO_NOTHING, db_column='id_colegio')
id_curso = models.ForeignKey('Curso', models.DO_NOTHING, db_column='id_curso')
id_comuna = models.ForeignKey('Comuna', models.DO_NOTHING, db_column='id_comuna')

class Meta:
    managed = True
    db_table = 'alumno'

class Curso(models.Model):
id_curso = models.IntegerField(primary_key=True)
grado = models.CharField(max_length=1)
educacion = models.CharField(max_length=10)
letra = models.CharField(max_length=1)
id_colegio = models.ForeignKey(Colegio, models.DO_NOTHING, db_column='id_colegio')
rut_profesor = models.OneToOneField('Profesor', models.DO_NOTHING, db_column='rut_profesor')

class Meta:
    managed = True
    db_table = 'curso'


class Horario(models.Model):
id_horario = models.IntegerField(primary_key=True)
dia = models.CharField(max_length=10)
hora_inicio = models.CharField(max_length=5)
hora_termino = models.CharField(max_length=5)
annio = models.IntegerField()
id_asignatura = models.ForeignKey(Asignatura, models.DO_NOTHING, db_column='id_asignatura')
id_sala = models.ForeignKey('Sala', models.DO_NOTHING, db_column='id_sala')
rut_profesor = models.ForeignKey('Profesor', models.DO_NOTHING, db_column='rut_profesor')
id_curso = models.ForeignKey(Curso, models.DO_NOTHING, db_column='id_curso')

class Meta:
    managed = True
    db_table = 'horario'

views.py

def datosAlumno(request):
    rut= request.user.rut_user       
    notas = Nota.objects.select_related('id_asignatura').filter(rut_alumno=rut)
    asistencias = Asistencia.objects.filter(rut_alumno=rut)
    observaciones = Observacion.objects.select_related('rut_profesor').filter(rut_alumno=rut)       
    idcurso = Alumno.objects.select_related('id_curso').filter(rut_alumno=rut)
    horarios = Curso.objects.filter(idcurso ='id_curso')
    print(asistencias)
    print(notas)
    print(observaciones)
    print(horarios)
    return render(request, 'core/ver.html', {'notas': notas, 'asistencias': asistencias, 'observaciones': observaciones, 'horarios': horarios})

                                      

Вот пример из Документации Django:

from django.db import models

class Reporter(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    email = models.EmailField()

    def __str__(self):
        return "%s %s" % (self.first_name, self.last_name)

class Article(models.Model):
    headline = models.CharField(max_length=100)
    pub_date = models.DateField()
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)

    def __str__(self):
        return self.headline

    class Meta:
        ordering = ('headline',)

Также вы можете посмотреть select_related.

Надеюсь, это вам поможет.

Вернуться на верх