我有三個flask-sqlalchemy-models。Books
-管理員的唯一條目:
class Book(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
book_name = db.Column(db.String(20), unique=True, nullable=False)
def __repr__(self):
return self.book_name
Bookscomp
-用戶條目,與以上相關:
class Bookscomp(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
book = db.Column(db.Integer, db.ForeignKey('book.id'))
Company
-用戶,與以上相關:
class Company(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(100), nullable=False)
books = db.relationship('Bookscomp', secondary=companybook, lazy='dynamic',
backref=db.backref('company'))
companybook = db.Table('companybook',
db.Column('companyid', db.Integer, db.ForeignKey('company.id'), primary_key=True),
db.Column('bookid', db.Integer, db.ForeignKey('bookscomp.id'), primary_key=True),
)
問題:我試圖通過Company
+Bookscomp
從Book
模型中獲取book_name
。所以一個公司有很多書,每本書都參考了一般的圖書信息。像這樣嘗試:
company = OrganizatCompanyion.query.filter_by(id=comp.id).first()
books = company.books.all()
for item in books:
print(item.book.book_name)
#AttributeError: 'int' object has no attribute
print(item.book)
#Gives book id from book model, but I need name
為什么我不能直接在上面的代碼片段中獲得book_name
?如何才能做到這一點呢?
您還沒有定義
Book
和Bookcomp
之間的關系,所以當您請求item.book
時,它會得到book = db.Column(db.Integer...
值。也許可以調整你的Bookscomp
模型如下: