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.usernameProfesor:-
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.idEstudiantes:-
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.idAsignació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.idAhora, 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.
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.
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