gpt4 book ai didi

python - 如何查询学生所在类(class)的文件?

转载 作者:行者123 更新时间:2023-12-01 06:34:18 25 4
gpt4 key购买 nike

在用户的个人资料页面上,我想显示他所属类(class)的文件。这是我在 models.py 中编写的flask和flask_sqlalchemy中的代码

我已经让下面的代码工作了,但正如你所看到的,它的效率不高。

files = []
for i in User.query.get(1).course:
files.extend(i.files)

我想做如下的事情,但由于某些原因不起作用。

>>> db.session.query(File).join(course_files).join(course_students).all()

Traceback Exception (most recent call):
#

具有关系的完整源代码。



class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
admin = db.Column(db.Boolean, default=False)
username = db.Column(db.String(64), index=True, unique=True)
mobile = db.Column(db.Integer, index=True, unique=True)
password_hash = db.Column(db.String(128))
last_seen = db.Column(db.DateTime, default=datetime.utcnow)


course_students = db.Table(
'course_students',
db.Column('course_id', db.Integer, db.ForeignKey('course.id')),
db.Column('user_id', db.Integer, db.ForeignKey('user.id'))
)

course_files = db.Table(
'course_files',
db.Column('course_id', db.Integer, db.ForeignKey('course.id')),
db.Column('file_id', db.Integer, db.ForeignKey('file.id'))
)


class Course(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, nullable=False)
fees = db.Column(db.String)
timing = db.Column(db.Time, nullable=False)
students = db.relationship('User', secondary=course_students,
backref=db.backref('course', lazy='dynamic'))
files = db.relationship('File', secondary=course_files,
backref=db.backref('course', lazy='dynamic'))

def __repr__(self):
return f'<Course({self.name})>'


class File(db.Model):
id = db.Column(db.Integer, primary_key=True)
filename = db.Column(db.String)
timestamp = db.Column(db.DateTime, default=datetime.utcnow)
data = db.Column(db.LargeBinary)
length = db.Column(db.Integer, default=0)
mime_type = db.Column(db.String, default='application/octet-stream')



最佳答案

如果没有异常详细信息,很难说,但您可能只是在连接中缺少一些过滤当前用户查询的指令。

如果您正在查看的用户位于变量“u”中,那么这样的查询只会返回该用户的相关文件。

db.session.query(File).join(course_files).join(course_students, course_students.c.user_id == u.id).all()

关于python - 如何查询学生所在类(class)的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59750041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com