Я натолкнулся на случай использования, в котором я хочу иметь две разные flask конечные точки отдыха, использующие одну и ту же модель. Например, у меня есть модели:
from flask import Flask
app = Flask()
db = SQLAlchemy(app)
class Product():
id = db.Column(db.BigInteger, primary_key=True, name='ProductKey')
name = db.Column(db.String(length=100), nullable=False, name='ProductName')
sku = db.Column(db.String(length=100), nullable=False, name='ProductSku')
class TransactionDetail():
id = db.Column(db.BigInteger, primary_key=True, name='TransactionKey')
transaction_date = db.Column(db.DateTime, name='TransactionDate')
transaction_amount = db.Column(db.Decimal, name='TransactionAmount')
pid = db.Column(db.BigInteger, db.ForeignKey('Schema.Table.ProductKey'),name='ProductKey')
product = db.relationship(Product)
Допустим, у меня есть 2 разные конечные точки метода публикации, которые могут публиковать Product и TransactionDetail. Когда я отправляю сообщение в конечную точку TransactionDetail, для свойства продукта я хочу только опубликовать sku продукта и исключить название продукта, например TransactionDetail
ниже:
Product:
{
"name": "string",
"sku": "string",
}
TransactionDetail:
{
"transaction_date": "2020-02-12T15:28:50.458Z",
"transaction_amount": 0.0,
"product": {
"sku": "string"
}
}
У меня есть пара вопросов:
- Какой самый элегантный способ опубликовать детали транзакции по номеру продукта, а затем автоматически найти идентификатор из модели студента? Есть ли собственный способ сделать это, или мне нужно написать logi c в методе, чтобы искать себя.
- Когда я обновляю модель продукта, чтобы включить только sku для свойства TransactionDetail.product, конечная точка post для Product также исключает поле имени и сохраняет только sku. Есть ли способ зарегистрировать одну и ту же модель в двух разных версиях в функции Flask Restplus
api.model()
?