Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

359
Vistas
¿Cómo filtrar los datos asociados en el matraz y Flask-SQLAlchemy?

Acabo de empezar a aprender sobre Flask y Flask-SQLAlchemy y he creado los siguientes modelos:

Usuario:-

 class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, db.Sequence('users_id_seq'), primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) created_at = db.Column(db.TIMESTAMP(timezone=True), default=helpers.get_utc_now, nullable=False) updated_at = db.Column(db.TIMESTAMP(timezone=True), default=helpers.get_utc_now, nullable=False, onupdate=helpers.get_utc_now) def __repr__(self): return '<User %r>' % self.username

Profesor:-

 class Teacher(db.Model): __tablename__ = "teachers" id = db.Column(db.Integer, db.Sequence("teachers_id_seq"), primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey("users.id")) created_at = db.Column(db.TIMESTAMP(timezone=True), default=helpers.get_utc_now, nullable=False) updated_at = db.Column( db.TIMESTAMP(timezone=True), default=helpers.get_utc_now, nullable=False, onupdate=helpers.get_utc_now ) def __repr__(self): return "<Teacher %r>" % self.id

Estudiantes:-

 class Student(db.Model): __tablename__ = 'students' id = db.Column(db.Integer, db.Sequence('students_id_seq'), primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) created_at = db.Column(db.TIMESTAMP(timezone=True), default=helpers.get_utc_now, nullable=False) updated_at = db.Column(db.TIMESTAMP(timezone=True), default=helpers.get_utc_now, nullable=False, onupdate=helpers.get_utc_now) def __repr__(self): return '<Student %r>' % self.id

Asignación:-

 class Assignment(db.Model): __tablename__ = "assignments" id = db.Column(db.Integer, db.Sequence("assignments_id_seq"), primary_key=True) student_id = db.Column(db.Integer, db.ForeignKey(Student.id), nullable=False) teacher_id = db.Column(db.Integer, db.ForeignKey(Teacher.id), nullable=True) content = db.Column(db.Text) grade = db.Column(BaseEnum(GradeEnum)) state = db.Column(BaseEnum(AssignmentStateEnum), default=AssignmentStateEnum.DRAFT, nullable=False) created_at = db.Column(db.TIMESTAMP(timezone=True), default=helpers.get_utc_now, nullable=False) updated_at = db.Column( db.TIMESTAMP(timezone=True), default=helpers.get_utc_now, nullable=False, onupdate=helpers.get_utc_now ) def __repr__(self): return "<Assignment %r>" % self.id

Ahora, en mi aplicación, un estudiante puede crear, editar y enviar una tarea. Y cuando el estudiante envíe una tarea, se enviará al maestro en particular.

Cuando el estudiante crea un campo de estado de tarea en la tarea configurada como BORRADOR, y cuando envió la tarea, cambiará a ENVIADA.

Soy totalmente nuevo en Flask y Flask-SQLAlchemy y cosas de back-end, y no puedo averiguar cómo recuperar las tareas enviadas a un maestro en particular.

También escribí la siguiente consulta, pero obtuve un resultado incorrecto **: - **

obtuve datos vacíos pero hay datos disponibles en db.

 @classmethod # is written is assignment class def get_assignments_by_teacher(cls, teacher_id): return cls.filter(cls.teacher_id == teacher_id).all()

desde donde estoy llamando a este método: -

 teacher_assignments = Assignment.get_assignments_by_teacher(p.teacher_id)

Gracias por adelantado.

Esperamos aquí de usted pronto.

NOTA: también puedes sugerirme un mejor título para esta publicación.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Si está tratando de consultar todas las tareas de un determinado maestro, puede lograrlo usando la función de consulta de sqlalchemy con un filtro.

Documentos

 teacher_assignments = Assignment.query.filter(Assignment.teacher_id == teacher_id).all()

También puede agregar algo llamado backref en la definición de su modelo de maestro de esta manera:

assignments = relationship("Assignment", backref="teacher")

Luego, si tiene su objeto profesor, puede acceder a sus tareas de esta manera sin escribir ninguna consulta: teacher.assignments

Consulte aquí para obtener más información sobre Backref

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda