使用flask-sqlalchemy从数据库获取数据时遇到问题。我想为每个人获取“答案”,并在管理面板中显示它们。我创建了一个具有关系(一对多)关系的数据库,并且一切正常,但是无法在我的网站上打印它们。少说话,多编码。
这是我的数据库代码
class User(db.Model,UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
password = db.Column(db.String(60), nullable=False)
answers = db.relationship('Answer', backref='author', lazy=True)
def __repr__(self):
return f"User('{self.username}', '{self.password}')"
class Answer(db.Model):
id = db.Column(db.Integer, primary_key=True)
date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
day = db.Column(db.Text, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
def __repr__(self):
return f"Post( '{self.date_posted}')"
这是我的路线代码(别无选择,只要相信我,我已经尝试了一切)
@app.route('/users')
def users():
users = User.query.all()
fusernames = User.query.order_by(User.username).all()
answers = Answer.query.filter_by(day = fusernames)
return render_template('users.html',users=users,answers=answers)
这是我的html模板
{% extends "admin.html" %}
{% block content %}
{% for user in users %}
<div class="contentUsers">
<div class="Userbox">
<div class="login">Login: {{user.username}}</div>
<div class="passwordUser"> Hasło: {{user.password}}</div>
<div class="AnswersDays">Day1: </div>
<div class="answers">{{ user.answers }}</div>
</div>
</div>
{% endfor %}
{% endblock content %}
因此,我想显示用户提供的所有答案。我检查了一下,一切正常,但是我不知道如何为确切的用户显示确切的答案。您在这里有网站的图片(不要大声笑)
我必须承认我是新来的,所以它可能非常简单,但是我确实检查了所有内容,阅读了整个文档,看了几十个教程,什么也没看。 某些代码可能很奇怪,但我正在尽力而为。
答案 0 :(得分:1)
由于您已经在User
模型和Answer
模型之间创建了一对多关系。调用关系属性user.answers
时,将获得Answer
对象的列表,如在模板中看到的那样。要显示这些答案的所有信息,您必须添加一个for循环。只需替换此行
<div class="answers">{{ user.answers }}</div>
具有:
<div class="answers">
<ul>
{% for answer in user.answers %}
<li>{{ answer.day}} - {{ answer.date_posted }}</li>
{% endfor %}
</ul>
</div>