我的两个模特是
class Users (db.Model):
UserId = db.Column(db.INTEGER, primary_key=True,autoincrement=True)
UserName = db.Column(db.String(25),nullable=False, unique=True)
Email = db.Column(db.String,nullable=False,unique=True)
plan = db.relationship(
'Messages',
collection_class=attribute_mapped_collection('language'),
cascade="all,delete"
)
class Messages (db.Model):
MessageId = db.Column(db.INTEGER,primary_key=True,autoincrement=True)
SenderId = db.Column(db.INTEGER,db.ForeignKey('Users.UserId'),nullable=False)
language = db.Column(db.Enum('de', 'en'), nullable=False)
现在,我的观点如下:
def premium():
usr_obj = models.Users.query.join(models.Messages)\
.order_by(models.Users.UserId.desc())
return render_template('user_plan.html', user=usr_obj)
我的user_html就像:
{% for a in user %}
{{ a.UserName }} </br> {{ a.SenderID }} </br>
{% endfor %}
它只给我{{a.UserName}}而不是{{a.SenderID}}的价值,为什么?
答案 0 :(得分:1)
如果您只想要来自此联接的senderId和UserName,您可以尝试:
obj= Users.query.with_entities(Users.UserName,Messages.SenderId
).join(Messages,Messages.SenderId==Users.UserId
).order_by(Users.UserId.desc()
).all()
解释: - 我们正在应用Messages.SenderId和Users.UserId
with_entities:表示我们只需要来自此联接的UserName,SenderId。
您可以使用for循环从此连接访问UserName和SenderId。 像这样:
for o in obj:
print o.UserName,o.SenderId
我希望这是您问题的解决方案。请根据您的问题使用它。
答案 1 :(得分:0)
可以使用:
{% for a in user %}
{{ a.UserName }} </br> {{ a.plan[g.current_lang].SenderID }} </br>
{% endfor %}