我有一个简单的一对多关系。我有Project
和Device
类。一个Project
可以有多个Device
当我使用关系将设备添加到项目中时,程序的行为与我预期的不同。你知道吗
完整的程序如下:
from sqlalchemy import Column, String, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
Base = declarative_base()
class Project(Base):
__tablename__ = "Projects"
name = Column('Name', String(50), primary_key=True)
devices = relationship("Device", back_populates="project")
class Device(Base):
__tablename__ = "Devices"
serial_no = Column('SerialNo', String(50), primary_key=True)
project_name = Column('ProjectName', String(50), ForeignKey("Projects.Name"))
project = relationship("Project", back_populates="devices", foreign_keys=[project_name])
if __name__ == "__main__":
p = Project(name="MyProject")
d = Device()
print("Before adding device:")
print(f"p.devices: {p.devices}")
print(f"d.project: {d.project}")
print(f"d.project_name: {d.project_name}")
p.devices.append(d)
print("After adding device:")
print(f"p.devices: {p.devices}")
print(f"d.project: {d.project}")
print(f"d.project_name: {d.project_name}")
下面是输出:
Before adding device:
p.devices: []
d.project: None
d.project_name: None
After adding device:
p.devices: [<__main__.Device object at 0x000001FF049B22B0>]
d.project: <__main__.Project object at 0x000001FF03DB0D30>
d.project_name: None
除最后一个d.project_name
外,所有输出都与预期一致。d.project_name
仍然返回None
。我希望它也被填充为MyProject
,因为d.project
返回那个项目对象。你知道吗
我错过了什么?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐