我有三张桌子,User,Post,和喜欢。我的喜欢和不喜欢的帖子到目前为止还在运行,但现在我想返回喜欢某个帖子的用户列表。喜欢将用户id和帖子id作为外键保存,并且在用户喜欢或不喜欢某个帖子时填充。现在我想筛选所有喜欢某个帖子的用户,但只筛选第一个喜欢该帖子的用户已经有三个用户喜欢这个帖子了
请参见下面的代码:
使用模型
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))
liked = db.relationship(
'Likes',
foreign_keys = 'Likes.user_id',
backref = 'user', lazy = 'dynamic')
def like_post(self, post):
if not self.has_liked_post(post):
like = Likes(user_id = self.id, post_id = post.id)
db.session.add(like)
def unlike_post(self, post):
if self.has_liked_post(post):
Likes.query.filter_by(
user_id = self.id,
post_id = post.id).delete()
def has_liked_post(self, post):
return Likes.query.filter(
Likes.user_id == self.id,
Likes.post_id == post.id).count() > 0
后模型
class Meetup(db.Model):
id = db.Column(db.Integer, primary_key = True)
body = db.Column(db.String(120))
timestamp = db.Column(db.DateTime, index = True, default=datetime.utcnow)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
likes = db.relationship('MeetupLike', backref = 'meetup', lazy = 'dynamic')
喜欢模特儿
class Likes(db.Model):
id = db.Column(db.Integer, primary_key = True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
路线
@app.route('/applicants/<int:post_id>')
def get_users(post_id):
likes = Likes.query.filter_by(post_id = post_id).first_or_404()
users = User.query.filter(User.id == likes.user_id).all()
return render_template('likes.html', title = "Users", users = users)
模板
<table>
{% for user in users %}
<tr valign="top" >
<td>
{{ user.firstname }}
</td>
< /tr>
{% endfor %}
</table>
我已经有三个喜欢的职位,并希望返回所有三个用户的详细信息,但只有一个是返回
在这里,你得到的是第一个喜欢,而不是所有喜欢
相反,你应该得到所有这些,并通过名单:
也可以尝试使用连接
相关问题 更多 >
编程相关推荐