gpt4 book ai didi

python - 打印出加入 flask 的结果

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:12 25 4
gpt4 key购买 nike

我正在制作一个 flask 应用程序,每个用户都可以在其中将他的员工添加到列表中。我有两个表:用户和员工,它们看起来像这样:

class User(UserMixin, db.Model):

id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
email = db.Column(db.String(120), index=True, unique=True)
password_hash = db.Column(db.String(128))
emps = db.relationship('Employee', backref = 'boss', lazy = 'dynamic')


def __repr__(self):
return '<User {}'.format(self.username)

def set_password(self, password):
self.password_hash = generate_password_hash(password)

def check_password(self, password):
return check_password_hash(self.password_hash, password)


class Employee(db.Model):

__tablename__ = 'Employees'

id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(64), index=True)
last_name = db.Column(db.String(64), index=True)
User_id = db.Column(db.Integer, db.ForeignKey(User.id))

def __repr__(self):
return '<Employee {0} {1}>'.format(self.first_name, self.last_name)

我尝试将其添加到我的用户类中,以便我可以加入这两个表:

    def user_employees(self):
user_emps = User.query.join(Employee, User.id == Employee.User_id).filter(User.id == Employee.User_id)
return user_emps

在我的 html 文件中我有这个:

{% block content %}

{% for employee in employees %}
<div>{{ employee }}</div>
{% endfor %}

{% endblock %}

这是 View 函数:

def Show_Employees():
employees = current_user.user_employees()

return render_template('emps.html', employees = employees)

但是这不起作用。我只在我的页面上写了这个:

<User test

预期的输出将是员工的名字和姓氏。我想问题出在连接上,但我无法弄清楚。有没有人遇到过类似的情况?

最佳答案

您无需担心手动加入,SQLalchemy 会为您处理所有这一切。您可以通过 user.emps 访问用户员工,它返回员工列表。我放弃了很多您的代码,您可以再次添加这些代码,只是为了让示例更小且易于理解。它功能齐全:

from flask import Flask, render_template_string
from flask_sqlalchemy import SQLAlchemy
from flask_login import UserMixin

app = Flask(__name__)
db = SQLAlchemy(app)

class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
emps = db.relationship('Employee', backref = 'boss', lazy = 'dynamic')

class Employee(db.Model):
__tablename__ = 'Employees'
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(64), index=True)
User_id = db.Column(db.Integer, db.ForeignKey(User.id))

db.create_all() # creates the database tables, not needed if you already have them

boss1 = User()
boss1.username = 'Mr Boss'
employee1 = Employee()
employee1.first_name = 'Mr peanut'
employee2 = Employee()
employee2.first_name = 'Mr butter'
boss1.emps = [employee1, employee2] # here is where you're binding the employees to the user
db.session.add(boss1)
db.session.commit()

@app.route('/')
def index():
user = User.query.get(1) # this returns the user with id1, which is 'Mr boss'
return render_template_string('''
This is user {{user.username}}<br>
His empoyees are:
{% for employee in user.emps %}
<div>{{ employee.first_name }}</div>
{% endfor %}
''', user=user)

app.run()

哪个,如果你去网站,打印:

This is user Mr Boss
His empoyees are:
Mr peanut
Mr butter

关于python - 打印出加入 flask 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49970249/

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