【发布时间】:2022-01-01 14:53:15
【问题描述】:
添加信息]
本系统用于存储学生自愿参加的信息。 我有以下三个模块:
- student2122:学生信息存储学生姓名、学号、
- 自愿2122:存储活动名称、时间、地点的自愿活动...
- volunteer2121:记录学生的参与信息,如参与者id、活动id……
现在我需要显示特定学生参与的所有活动。
class volunteer2122(db.Model):
__tablename__ = "tab_volunteer_2122"
id = db.Column(db.Integer, primary_key=True)
events_id = db.Column(db.Integer, db.ForeignKey("tab_voluntary_2122.id"))
student_id = db.Column(db.Integer, db.ForeignKey("tab_student_2122.id"))
actual_hr = db.Column(db.Float(255), default=0)
student = db.relationship("student2122", back_populates="events")
event = db.relationship("voluntary2122", back_populates="students")
class voluntary2122(db.Model):
# voluntary
__tablename__ = "tab_voluntary_2122"
id = db.Column(db.Integer, primary_key=True)
v_activity = db.Column(db.String(255), nullable=False)
v_date = db.Column(db.Date(), nullable=False, default=None)
v_time = db.Column(db.String(225), nullable=True)
v_duration = db.Column(db.Float(255))
# v_category = db.Column(
# db.Enum(CategoryEnum),
# )
v_category = db.Column(db.String(255), nullable=False)
v_venue = db.Column(db.String(255))
v_ppl = db.Column(db.String(255))
v_remark = db.Column(db.String(500))
students = db.relationship("volunteer2122", back_populates="event")
class student2122(db.Model):
# student
__tablename__ = "tab_student_2122"
id = db.Column(db.Integer, primary_key=True)
cname = db.Column(db.String(255))
ename = db.Column(db.String(255))
student_no = db.Column(db.String(255))
cic_no = db.Column(db.String(255))
add_date = db.Column(db.String(255))
class_code = db.Column(db.String(255))
programme = db.Column(db.String(255))
campus = db.Column(db.String(255))
academic_year = db.Column(db.String(255))
v_hr = db.Column(db.Float(255), default=0)
v_hr_per = db.Column(db.Float(255), default=0)
v_cata_hr = db.Column(db.Float(255), default=0)
v_cata_hr_per = db.Column(db.Float(255), default=0)
v_catb_hr = db.Column(db.Float(255), default=0)
v_catb_hr_per = db.Column(db.Float(255), default=0)
s_hr = db.Column(db.Float(255), default=0)
s_hr_per = db.Column(db.Float(255), default=0)
s_cata_hr = db.Column(db.Float(255), default=0)
s_cata_hr_per = db.Column(db.Float(255), default=0)
s_catb_hr = db.Column(db.Float(255), default=0)
s_catb_hr_per = db.Column(db.Float(255), default=0)
events = db.relationship("volunteer2122", back_populates="student")
我想使用以下 html 代码显示一位特定学生参与的所有活动:
<tbody class="my-2">
{% for s in events %}
<tr>
<td>{{ s.v_activity }}</td>
<td>{{ s.v_date }}</td>
<td>{{ s.v_time }}</td>
<td>{{ s.v_duration }}</td>
</tr>
{% endfor %}
</tbody>
但是,我未能使用以下路线脚本列出活动及其详细信息:
@app.route("/v_student_detail/<id>")
def v_student_detail(id):
student = student2122.query.filter_by(id=id).first()
done_activities = volunteer2122.query.filter_by(student_id=student.id).all()
events = voluntary2122.query.filter_by(id=done_activities.events_id).all()
return render_template('/sv_record/voluntary_record/v_student_detail.html', student=student, events=events)
以下错误消息。一旦我运行程序就会出现。而且我认为我未能将活动信息检索到“事件”:
错误: 'list' 对象没有属性 'events_id'
有人会帮忙提供解决方案吗?我已经花了很多时间,但我无法弄清楚。提前致谢。
【问题讨论】:
标签: python sql foreign-keys flask-sqlalchemy