sqlalchemy在删除之前更新另一个模型

2024-04-28 05:52:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我在postgresql中使用sqlalchemy。我是SQL炼金术的新手。在

我为模型“User”做了一个名为“to_User_id”的forien键来模拟“Invitation”,这个键不可以为null。在

当我试图删除模型“User”的实例时,使用

session.delete(user)

并且sqlalchemy在删除之前自动将invitation的to_user_id设置为NULL,并且postgresql引发以下错误。在

^{pr2}$

如何禁用它?在

这是我的模型定义

class User(Base):
    '''
    User model
    '''
    __tablename__='User'
    id = Column(Integer,primary_key=True)

class Invitation(Base):
    '''
    Invitation model
    '''
    __tablename__ = 'Invitation'
    __table_args__ = (UniqueConstraint('appointment_id', 'to_user_id'),)
    id = Column(Integer, primary_key=True)

    appointment_id = Column(Integer,ForeignKey('Appointment.id',
        ondelete='CASCADE'), nullable=False)
    appointment = relationship('Appointment', backref=backref('invitations'),
    )

    from_user_id = Column(Integer,ForeignKey('User.id',
        ondelete='SET NULL'), nullable=True)
    from_user = relationship('User', backref=backref('sent_invitations'),
        primaryjoin='Invitation.from_user_id==User.id')

    to_user_id = Column(Integer,ForeignKey('User.id',
        ondelete='CASCADE'), nullable=False)
    to_user = relationship('User',backref=backref('received_invitations'),
        primaryjoin='Invitation.to_user_id==User.id',
    )

Tags: to模型idtruecolumnintegerappointmentinvitation