大家好:我已经为此苦了一段时间。 我的模型如下:
class Job(db.Model):
__tablename__ = "job"
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(80), nullable=False)
city = db.Column(db.String(250), nullable=False)
state = db.Column(db.String(10), nullable=False)
zipCode = db.Column(db.String(10), nullable=False)
latitude = db.Column(db.String(10), nullable=False)
longitude = db.Column(db.String(10), nullable=False)
description = db.Column(db.String(200), nullable=False)
narrative = db.Column(db.String(250), nullable=False)
companyLogo = db.Column(db.String(250), nullable=False)
companyName = db.Column(db.String(250), nullable=False)
companyURL = db.Column(db.String(100), nullable=False)
time_created = db.Column(db.DateTime, nullable=False)
active = db.Column(db.Boolean, nullable=False)
我有一个@classmethod,它使用Postgres查询,在其中我想返回Job和计算出的距离。完美的工作。这是类方法的相关部分:
# defining an statement with a subquery that use our hybrid method
stmt = db.session.query(
Job,
Job.distance(lat1, lon1).
label('distance')).\
subquery()
# defining and aliases in the table to use above statement
job_alias = aliased(Job, stmt)
jobs = db.session.query(job_alias).\
filter(stmt.c.distance < dst).\
order_by(stmt.c.distance).\
paginate(page, per_page)
return jobs
这很好用。作业中的每个作业确实包含列距离
但是,当序列化(转储)过程在棉花糖模式中启动时,我不知道该怎么做才能将距离返回到视图,因为距离不是模型的一部分
我们如何在棉花糖中处理此问题?
这是我在此表的架构中拥有的所有内容
class JobSchema(ma.ModelSchema):
def validate_state(state):
"""Code removed for clarity"""
def validate_zipCode(zip):
"""Code removed for clarity"""
@pre_load
def get_longitude_for_zip(self, data):
"""Code removed for clarity"""
title = fields.Str(required=True, validate=[validate.Length(min=4, max=80)])
city = fields.Str(required=True, validate=[validate.Length(min=5, max=100)])
state = fields.Str(required=True, validate=validate_state)
zipCode = fields.Str(required=True, validate=validate_zipCode)
description = fields.Str(required=False, validate=[validate.Length(max=250)])
narrative = fields.Str(required=False, validate=[validate.Length(max=250)])
companyLogo = fields.Str(required=False, validate=[validate.Length(max=250)])
companyName = fields.Str(required=True, validate=[validate.Length(min=5, max=250)])
companyURL = fields.Str(required=True, validate=[validate.Length(min=4, max=100)])
latitude = fields.Str(required=True)
longitude = fields.Str(required=True)
time_created = fields.DateTime()
active = fields.Boolean(required=True)
class Meta:
model = modelJob
有人可以帮忙吗? 谢谢。