[英]Flask SQLAlchemy querying a model not returning the Foreign Key
我有以下课程:
class CompanyModel(db.Model):
__tablename__ = "tb_company"
__table_args__ = {"schema": "public"}
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100))
class CustomerModel(db.Model):
__tablename__ = "tb_customer"
__table_args__ = {"schema": "public"}
id = db.Column(db.Integer, primary_key=True)
company_id = db.Column(db.Integer,
db.ForeignKey(CompanyModel.id),
nullable=False)
company = db.relationship("CompanyModel",
foreign_keys=company_id,
backref=db.backref("company",
uselist=False))
但是,当我查询它时,外键不会显示:
{
"id": 79
}
我什至尝试在查询中手动设置其属性,但无论如何都行不通:
@classmethod
def find_by_id(cls, customer_id: int) -> "CustomerModel":
customer = cls.query.filter_by(id=customer_id).first()
setattr(customer, "company_id", customer.company.id)
return customer
我已经设法解决了。 刚刚将该字段添加到 Flask-Marshmallow 的自动架构中:
class CustomerSchema(ma.SQLAlchemyAutoSchema):
class Meta:
model = CustomerModel
load_instance = True
id = ma.auto_field(dump_only=True)
company_id = ma.auto_field(dump_only=True)
但是,我仍然有一个问题......我想使用“CompanyModel”中的另一个字段作为查询结果,例如“名称”列。 但是,当我尝试手动设置它时,出现以下错误:
ValueError: invalid literal for int() with base 10: 'Company Name'
我该怎么做?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.