Làm cách nào để khởi tạo backrefs của những người lập bản đồ mà không có một số truy vấn thông qua một phiên? Ví dụ, tôi có hai mô hình, có tên là "khách hàng" và "Subject" trong mã sau:thuộc tính lớp backref
Base = declarative_base()
class Client(Base):
__tablename__ = "clients"
id = Column(Integer, primary_key=True)
created = Column(DateTime, default=datetime.datetime.now)
name = Column(String)
subjects = relationship("Subject", cascade="all,delete",
backref=backref("client"))
class Subject(Base):
__tablename__ = "subjects"
id = Column(Integer, primary_key=True)
client_id = Column(Integer, ForeignKey(Client.id, ondelete='CASCADE'))
Sau đó, ở đâu đó trong mã của tôi, tôi muốn nhận được backref client
của lớp Subject
như thế này, nhưng mà đặt ra một ngoại lệ:
>>> Subject.client
AttributeError: type object 'Subject' has no attribute 'client'
Sau một truy vấn để Client
như:
>>> session.query(Client).first()
>>> Subject.client
<sqlalchemy.orm.attributes.InstrumentedAttribute at 0x43ca1d0>
Thuộc tính client
được tạo sau khi truy vấn đến mô hình liên quan (trình ánh xạ).
Tôi không muốn tạo các truy vấn "nóng lên" như vậy!
Không tuyên bố backref chỉ đơn giản là 'backref = 'client'' làm việc tốt hơn? Tôi hơi bối rối vì điều này không hoạt động bình thường. –