python - 为什么 SQLAlchemy 中的多对多关系显示 Nonetype?
问题描述
Base = declarative_base()
class Products(Base):
__tablename__ = 'tb_products'
#__table_args__ = {'extend_existing': True}
prod_id = Column(Integer, primary_key=True)
prod_category = Column(Integer,ForeignKey('tb_categories.ctg_id'))
category = relationship("Categories",back_populates="product") # many to one
prod_name = Column(String(100), nullable=False)
description = Column(String(100), nullable=False)
image = Column(String(100), nullable=False,default='default.jpg')
qty_available = Column(Integer, nullable=False,default=0)
regular_price = Column(DECIMAL,nullable=False,default=0.0)
discounted_price = Column(DECIMAL,nullable=False,default=0.0)
product_rating = Column(DECIMAL,nullable=False,default=0.0)
def __init__(self, prod_name = "test", description = "Dummy desciption",image =
"Dummy.png",qty_available = 10,regular_price = 1000,discounted_price =
800,product_rating = 0.0):
self.prod_name = prod_name
self.description = description
self.image = image
self.qty_available = qty_available
self.regular_price = regular_price
self.discounted_price = discounted_price
self.product_rating = product_rating
class Cart(Base):
__tablename__ = 'tb_cart'
#__table_args__ = {'extend_existing': True}
cart_id = Column(Integer, ForeignKey('tb_user.userid'), primary_key=True)
user = relationship("User",back_populates='cart') # one to one
class Cart_Products(Base):
__tablename__ = 'tb_cart_products'
__table_args__ = {'extend_existing':True}
prod_id = Column(Integer, ForeignKey('tb_products.prod_id'),primary_key=True)
cart_id = Column(Integer, ForeignKey('tb_cart.cart_id'),primary_key=True)
products = relationship("Products")
当我打印尝试打印
cartObj = Cart()
cart_productsObj = Cart_Products()
userObj.cart = cartObj
cart_productsObj.products.append(productObj)
userObj.cart.cart_products.append(cart_productsObj)
print(f"&&&&&&&{type(cartObj.cart_products)}")
print(f"&&&&&&&{type(cart_productsObj.products)}")
print(f"$$$$$$${type(userObj.cart)}")
print(f"$$$$$$${type(cartObj.user)}")
它向我显示以下错误
File "/home/devendra/Python_WS/ecommerce-project/app.py", line 248, in addToCart
cart_productsObj.products.append(productObj)
AttributeError: 'NoneType' object has no attribute 'append'
当我在用户和购物车之间实现一对一关系时,我遇到了同样的问题。它在我删除整个数据库并创建一个新数据库后解决了。但我想了解为什么会发生这些错误
此外,我想将关联对象用于多对多,这样我就不必使用手动查询。
解决方案
推荐阅读
- c# - WebBrowser 控件的 HTML 源值在 C# 中不会更改
- python - 使用空格运行宏 Python 3.8
- html - 取消选中单选按钮图像
- javascript - 收到 403 错误(Fullcontact Api 密钥包含非十六进制字符)
- java - 如何使用最新版本的 JDK 构建和运行?
- r - 如果两列中的任何一列具有指定值,则过滤行
- django - 如何在 django 中使用 getlist()
- botframework - 在 Composer 中使用自适应卡作为输入表单的任何示例?
- java - 如何正确初始化HashMap
- android - 如何在 Android API 级别 28 中使用 addOverrideApn() 方法?