簡體   English   中英

flask-sqlalchemy,一對多關系,外鍵更改為NULL

[英]flask-sqlalchemy, one-many relationship, foreign key changes into NULL

我有用戶表和專輯表等。和用戶相冊有一對多的關系。

但是,當用戶與一個或多個相冊關聯時,從相冊表中排除最新密鑰的外鍵將變為null。 這是user_uid = 1有3個相冊,user_uid = 2有1個相冊的情況。(但是user_uid = 1的外鍵只是一個。而且這個問題在具有多對多關系的地方也會出現。這是我的代碼。

class User(Base):
__tablename__ = 'user'

uid = Column(Integer, primary_key=True)
username = Column(String(10), unique=True, nullable=False)
email = Column(String(35), unique=True, nullable=False)
salted_password = Column(String(100), unique=True, nullable=False)
profile_pic = Column(String(100))
authorization = Column(Boolean)
expiry = Column(DATETIME)
fcm_token = Column(String(45))
created_at = Column(DATETIME)
albums = relationship('Album')
notifications = relationship('Notification')
like_photo = relationship('Photo', secondary=like_photo)
follow_album = relationship('Album', secondary=follow_album)
followed = relationship('User',
                           secondary=followers,
                           primaryjoin=(followers.c.follower_id == uid),
                           secondaryjoin=(followers.c.followed_id == uid),
                           backref=backref('followers', lazy='dynamic'),
                           lazy='dynamic')
comment_photo = relationship('Photo', secondary=comment)




class Album(Base):
__tablename__ = 'album'

aid = Column(Integer, primary_key=True)
title = Column(String(45), nullable=False)
created_at = Column(DATETIME)
user_uid = Column(Integer, ForeignKey('user.uid'))
photos = relationship('Photo')
album_tags = relationship('Album_tag')

而且我更新了專輯表,如下所示。

u = User.query.filter(User.uid == session['uid']).first()
u.albums = [Album(title=request.json['title'], created_at=datetime.utcnow())]               
db_session.add(u) 
db_session.commit()

我不知道為什么

我相信您需要采取另一種方法,因為這樣會覆蓋用戶的相冊列表:

coffee_album = Album(title=request.json['title'], \
                     created_at=datetime.utcnow())
u = User.query.filter(User.uid == session['uid']).first()
coffe_album.user_uid = u.uid
db_session.add(coffee_album) 
db_session.commit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM