Регистрация таблиц 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.
Надеюсь, это вам поможет.