我正在尝试在我的user
和post
表之间建立多对多关系,但最终我的user.liked.all()
和post.liked_by.all()
仍在打印[]
。
这是关联表:
likes = db.Table('likes',
db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
db.Column('post_id', db.Integer, db.ForeignKey('post.id'))
)
还有user
类代码:
liked = db.relationship('Post',
secondary=likes,
primaryjoin=(likes.c.user_id == id),
secondaryjoin=(likes.c.post_id == Post.id),
backref=db.backref('liked_by', lazy='dynamic'),
lazy='dynamic'
)
def is_liked(self, post):
return self.liked.filter(likes.c.post_id == post.id).count() > 0
def like(self, post):
if not self.is_liked(post):
self.liked.append(post)
def unlike(self, post):
if self.is_liked(post):
self.liked.remove(post)
两个表都有一个id
字段。
所以我无法得到这种行为的原因。