我在restfulflask应用程序中使用sqlalchemy和marshullow来序列化我的模型。我有一个混合资产,来自我的一个关系模型。现在,我想使用相关模型中的模式在我的模式中序列化这个混合_属性。在
以前有人这样做过吗?这是我的相关代码。当我检查响应时,它似乎没有在模型的序列化版本中包含last_assessment
class Person(db.Model):
daily_rula_average_ranges = db.relationship('DailyRulaAverageRange', order_by="DailyRulaAverageRange.date", back_populates='person')
@hybrid_property
def last_assessment(self):
if self.daily_rula_average_ranges.length > 0:
return self.daily_rula_average_ranges[-1]
class PersonSchema(ma.Schema):
last_assessment = ma.Nested(DailyRulaAverageRangeSchema, only=['id', 'date', 'risk'])
class Meta:
fields = ('last_assessment')
这有点鬼祟祟,但我相信问题是
if self.daily_rula_average_ranges.length > 0:
行引起了AttributeError,因为长度通常不是列表的属性。你可能是说if len(self.daily_rula_average_ranges) > 0:
。在下面是一个与ORM无关的示例-如果引发属性错误,序列化程序将不返回任何字段,但如果属性返回了适当的数据,则返回数据fine:
棉花糖的这种行为并不奇怪,因为引发AttributeError的属性将显示为该属性不存在,例如:
^{pr2}$相关问题 更多 >
编程相关推荐