flask问题,在list页面如何显示一对多外键的内容
models里边的shift类,这个是一
class Shift(db.Model):
__tablename__ = 'shift'# 关系模型中的1
id = db.Column(db.Integer, primary_key=True, autoincrement=True, nullable=False)
name = db.Column(db.String(10), nullable=False)
draw_itp = db.relationship('Draw_itp', backref="shift", lazy="dynamic")
def __repr__(self):
return f'<Product_people {self.id} : {self.name}>'
下边是一个记录类,是多
class Draw_itp(db.Model):# 这里边的班次,机台都是存储上述具体类里的id,需要做外检关联,这个记录是多,上述表是一
__tablename__ = 'draw_itp'# 关系模型中的多,记录
id = db.Column(db.Integer, primary_key=True, autoincrement=True, nullable=False)
created_at = db.Column(db.DateTime, default=datetime.datetime.now)
updated_at = db.Column(db.DateTime, default=datetime.datetime.now)
# shift = db.Column(db.String(10), default='Day')
shift_id = db.Column(db.Integer, db.ForeignKey('shift.id'))# ceshi
# tester = db.Column(db.String(10))
tester_id = db.Column(db.Integer, db.ForeignKey('test_people.id'))
# productor = db.Column(db.String(10))
productor_id = db.Column(db.Integer, db.ForeignKey('product_people.id'))
# line_name = db.Column(db.String(10))
line_name_id = db.Column(db.Integer, db.ForeignKey('draw_line.id'))
wire_dia = db.Column(db.Integer, db.ForeignKey('draw_database.id'))
wire_dia_t = db.Column(db.Float, default=0.000)
wire_dia_tt = db.Column(db.String(30))# tt代表要求值
f_value = db.Column(db.Float, default=0.000)
f_value_tt = db.Column(db.String(30))
EG_gb_tt = db.Column(db.String(30))
EG_gb = db.Column(db.String(30))
EG_as_tt = db.Column(db.String(30))
EG_as = db.Column(db.String(30))
TS_as_tt = db.Column(db.String(30))
TS_as = db.Column(db.String(30))
resistance_tt = db.Column(db.String(30))
resistance = db.Column(db.String(30))
appereance = db.Column(db.String(50))
note = db.Column(db.Text())
ok_or_not = db.Column(db.Boolean, default=True)
def __repr__(self):
return f'<Draw_itp {self.id}:{self.wire_dia}>'
view里边的如下图
前端是呈现页面
问题:
现在在数据库Draw_itp的记录里记录的是shift的id。
问题是在web上班次这列显示shift类的name字段。
我在view的呈现list的视图函数应该如何写查询呢?
这个动态数据库关系查询应该如何写呢?困扰好久了,想不明白。。。
没用过flask的ORM,用过Django的ORM。我个人更倾向于SQL,毕竟建表建模型是数据库跟在行,它就是专门干这个的。
步骤是:先用SQL建好表关系,然后导入(映射)到Django的Models里。
Flask应该也可以进行类似的操作。 其实动态查询这里,外键设置有各点开始没有明白。
draw_itp = db.relationship('Draw_itp', backref="shift", lazy="dynamic")
这里边的backref,相当于在Draw_itp类里边加了一个属性时shift,前端遍历的时候直接访问这个属性就能获取repr的返回值
阿奇_o 发表于 2022-1-8 22:24
没用过flask的ORM,用过Django的ORM。我个人更倾向于SQL,毕竟建表建模型是数据库跟在行,它就是专门干这个 ...
感谢回复,不是非it专业,写的项目不大,直接就看的flask,还有很多简单的概念不够理解 本帖最后由 kogawananari 于 2022-1-9 03:23 编辑
阿奇_o 发表于 2022-1-8 22:24
没用过flask的ORM,用过Django的ORM。我个人更倾向于SQL,毕竟建表建模型是数据库跟在行,它就是专门干这个 ...
flask不帶ORM的只能自己配置第三方ORM八成它這是用的其他人封裝的低版本的SQLALchemy{:10_292:}
orm就是爲了和數據庫解耦不受限于數據庫是mysql還是Oracle 本帖最后由 kogawananari 于 2022-1-9 03:25 编辑
建議你直接去讀SQLALchemy的官方文檔 從頭開始看 自己寫一遍 脫離flask單獨去寫 代替sql語句去查詢
實在不行還是學不會就只能寫存儲過程調用了
幸虧你這還是同步的換成異步SQLALchemy連官方文檔都很含糊 kogawananari 发表于 2022-1-9 03:24
建議你直接去讀SQLALchemy的官方文檔 從頭開始看 自己寫一遍 脫離flask單獨去寫 代替sql語句去查詢
實在 ...
用的flask-sqlalchemy,flask-wtf
这不是正规军吗? {:9_241:} 本帖最后由 阿奇_o 于 2022-1-9 11:47 编辑
你要先想好(设计) 各表都包括些什么(有哪些列),表和表之间通过什么来建立关系(外键) ,
如果你会SQL,这两个应该可以理解,从而有助于你设计出合理可行的"模型"。 不过同时还要看你对各表"业务"的理解。
而用ORM(即flask-sqlalchemy等ORM工具/插件),其实就是对应上面"模型",表 ←→ Python类; 列(字段)←→ 类的属性; 行(记录)←→ 类的实例
所以关键是:能否设计出合理可行的模型。其次才是代码如何实现,如何查询,如何展示等问题。
rsj0315 发表于 2022-1-9 10:52
用的flask-sqlalchemy,flask-wtf
这不是正规军吗?
我沒用過flask 應該是是被二次封裝的你用原版的sqlalchemy寫幾個demo就會了
我學的是fastapi ,用的sqlalchemy是直接用的 沒和框架結合
页:
[1]