我有一个项目,文章的价格根据它们的位置而不同。
和Article
型号ArticlePrice
如下:
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import relationship
db = SQLAlchemy()
class Article(db.Model):
__tablename__ = 'article'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(255), nullable=False)
description = db.Column(db.Text)
prices = relationship("ArticlePrice")
class ArticlePrice(db.Model):
__tablename__ = 'article_prices'
id = db.Column(db.Integer, primary_key=True)
article_id = db.Column(db.Integer, db.ForeignKey("article.id"), nullable=False)
location_id = db.Column(db.Integer, db.ForeignKey("location.id"), nullable=False)
price = db.Column(db.Integer, nullable=False)
location = relationship('Location')
我不想将文章的所有价格返回给客户,而只是返回他的位置价格。比如他收到一个像这样的 JSON:
{
id: '',
title: '',
description: '',
price: 0
}
所以我的架构现在看起来像这样:
article = namespace.model('Article', {
'id': fields.Integer(required=True),
'title': fields.String(required=True),
'description': fields.String(required=True),
'price': fields.Integer(attribute=lambda x: x.prices[0].price), # This one works
})
这适用于lambda 表达式,但在文档(flask-restful和flask-restplus)中他们谈论了另一种方式,但我无法使其工作如下:
'price': fields.Integer(attribute='prices[0].price') # This one doesn't work
我错过了什么?为什么最后一个语法不起作用?我误解了这种语法用法吗?