我在用 Marshmallow-sqlAlchemy 序列化对象时遇到了一些麻烦。
我有两个对象:
class Product(Model):
__tablename__: product_table_name
id = Column(Integer, primary_key=True)
name = Column(String)
class BasketItem(Model):
__tablename__: basket_item_table_name
id = Column(Integer, primary_key=True)
product_id = Column(
Integer, ForeignKey(f"{product_table_name}.id"), nullable=False
)
product = relationship("Product", foreign_keys="BasketItem.product_id")
这是棉花糖的配置:
class ProductBasketItemSchema(ModelSchema):
class Meta:
model = Product
fields = ("id", "name",)
class BasketItemSchema(ModelSchema):
class Meta:
model = BasketItem
include_relationships = True
fields = ("id", "product",)
product: Nested(ProductBasketItemSchema, many=False)
但输出basket_item_schema.dump(items)
仅打印产品的 ID,而不是内容:
[{'id': 1, 'product': 123}]
代替
[{'id': 1, 'product': {'id': 123, 'name': 'first'}}]
我认为问题出在 Schema 声明上,因为我可以在转储产品之前访问产品的所有字段。
我错过了什么吗?