Flask модель API Restplus - PullRequest
       26

Flask модель API Restplus

0 голосов
/ 12 февраля 2020

Я натолкнулся на случай использования, в котором я хочу иметь две разные 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()?
...