나는 친구와 친한 친구를 만들 수있는 애플 리케이션을 가지고 지금은 각 사용자가 단 하나의 가장 친한 친구를 갖고 싶어 그래서 다른 기능을 정의해야/플라스크 sqlalchemy 및 many - to - many 관계? 어떠한 제안 ?플라스크 - sqlalchemy 하나만 BestFriend 만들기
model.py 고맙습니다 :
friends = db.Table('friends',
db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
db.Column('friend_id', db.Integer, db.ForeignKey('user.id'))
)
best_friend = db.Table('best_friend',
db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
db.Column('friend_id', db.Integer, db.ForeignKey('user.id'))
)
class User(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(50), index=True, unique= True)
email = db.Column(db.String(50),index=True, unique= True)
bestfriend = db.relationship('User',
secondary = best_friend,
primaryjoin = (best_friend.c.user_id == id),
secondaryjoin = (best_friend.c.friend_id == id),
backref = db.backref('best_friend', lazy = 'dynamic'),
lazy = 'dynamic'
)
def are_bestfriends(self, user):
return self.is_bestfriend.filter(best_friend.c.friend_id == user.id).count()> 0
def be_bestfriend(self, user):
if not self.are_bestfriends(user):
self.bestfriend.append(user)
user.bestfriend.append(self)
return self
사용자가 가장 친한 친구를 한 명만 가질 수 있다면 일대일 관계를 사용하고 다 대다 관계를 사용하지 않을 수도 있습니다. – dirn
그래서 일대일 관계에 대해 검색하면 bestfriend = db.relationship에 uselist = False를 추가해야합니다.하지만 여전히 시도 할 때 가장 친한 친구가 둘 이상있을 수 있습니다. 바로 @dirn입니다. – Linda
현재 데이터 구조 그것을 허용합니다. 당신은 아마 그것을 바꾸고 싶다. – dirn