0

假设我的模型类如下。

class BankAccount(db.Model):
    a = db.Column(db.Integer, primary_key=True)
    b = db.Column(db.String(80))

我的架构如下所示。

class CreateAccountSchema(ma.SQLAlchemyAutoSchema):
    class Meta:
        model = BankAccount
        load_instance = True
        ordered = True

但是在这里我想定义一个在我的模型类中不存在的字段c,因为它应该只用于转储(ing)值而不是存储在数据库中。就像是...

class CreateAccountSchema(ma.SQLAlchemyAutoSchema):
    class Meta:
        model = BankAccount
        dump_only = ('c',)
        load_instance = True
        ordered = True
        c = #somedefination
4

1 回答 1

1

你可以这样做:

class CreateAccountSchema(ma.SQLAlchemyAutoSchema):
    class Meta:
        model = BankAccount
        load_instance = True
        ordered = True
        c = fields.Method("get_data")

    def get_data(self, obj):
        if hasattr(obj, "data"):
            return obj.data
        return None

那将转储额外的字段。你可以像这样使用它:

bank_account = db.session.query(BankAccount).first()
bank_account.data = "whatever"
schema = CreateAccountSchema()
schema.dump(bank_account)

更多信息在这里

于 2021-02-09T19:33:21.353 回答