Traceback (most recent call last):
File "/var/task/falcon/api.py", line 269, in __call__
responder(req, resp, **params)
File "/var/task/payments/resources/base_resource.py", line 105, in on_get
return self.on_get_list(req, resp, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/task/peewee.py", line 3088, in inner
return fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/var/task/payments/resources/transaction.py", line 264, in on_get_list
serialized_data = schema.dump(transaction_base)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/task/marshmallow/schema.py", line 549, in dump
result = self._serialize(processed_obj, many=many)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/task/marshmallow/schema.py", line 511, in _serialize
return [
^
File "/var/task/marshmallow/schema.py", line 511, in
return [
^
File "/var/task/peewee.py", line 4588, in next
self.cursor_wrapper.iterate()
File "/var/task/peewee.py", line 4508, in iterate
result = self.process_row(row)
^^^^^^^^^^^^^^^^^^^^^
File "/var/task/peewee.py", line 7768, in process_row
obj = self.constructor(__no_default__=1, **data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/task/peewee.py", line 6510, in __init__
setattr(self, k, kwargs[k])
File "/var/task/playhouse/hybrid.py", line 35, in __set__
raise AttributeError('Cannot set attribute.')
AttributeError: Cannot set attribute.
('SELECT (`t1`.`amount` - `t1`.`amount_refunded`) AS
`net_amount`, `t1`.`created` FROM `transaction` AS `t1`
WHERE (`t1`.`merchant_id` = %s) ORDER BY `t1`.`created` DESC', [130])
Я предполагаю, что net_amount не связан с t1, как это могли ожидать остальные столбцы и зефир? Если я удалю (Transaction.amount - Transaction.amount_refunded).alias('net_amount'), из запроса и из класса, он будет работать только с одним созданным столбцом.
У меня такой крохотный запрос [code]transaction_base = ( Transaction.select( (Transaction.amount - Transaction.amount_refunded).alias('net_amount'), Transaction.created, ) .where(Transaction.merchant_id == merchant_account.id) .order_by(Transaction.created.desc()) ) [/code] а затем эта сериализация с использованием marshmallow [code] schema = TransactionCSVSchema(many=True) serialized_data = schema.dump(transaction_base) [/code] и это мой урок по зефиру [code]class TransactionCSVSchema(Schema): PaymentDate = fields.DateTime(attribute="created") NetAmount = fields.Float(attribute="net_amount") [/code] и выдает эту ошибку [code]Traceback (most recent call last): File "/var/task/falcon/api.py", line 269, in __call__ responder(req, resp, **params) File "/var/task/payments/resources/base_resource.py", line 105, in on_get return self.on_get_list(req, resp, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/task/peewee.py", line 3088, in inner return fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/var/task/payments/resources/transaction.py", line 264, in on_get_list serialized_data = schema.dump(transaction_base) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/task/marshmallow/schema.py", line 549, in dump result = self._serialize(processed_obj, many=many) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/task/marshmallow/schema.py", line 511, in _serialize return [ ^ File "/var/task/marshmallow/schema.py", line 511, in return [ ^ File "/var/task/peewee.py", line 4588, in next self.cursor_wrapper.iterate() File "/var/task/peewee.py", line 4508, in iterate result = self.process_row(row) ^^^^^^^^^^^^^^^^^^^^^ File "/var/task/peewee.py", line 7768, in process_row obj = self.constructor(__no_default__=1, **data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/task/peewee.py", line 6510, in __init__ setattr(self, k, kwargs[k]) File "/var/task/playhouse/hybrid.py", line 35, in __set__ raise AttributeError('Cannot set attribute.') AttributeError: Cannot set attribute. [/code] это запрос, который он делает [code]('SELECT (`t1`.`amount` - `t1`.`amount_refunded`) AS `net_amount`, `t1`.`created` FROM `transaction` AS `t1` WHERE (`t1`.`merchant_id` = %s) ORDER BY `t1`.`created` DESC', [130]) [/code] Я предполагаю, что net_amount не связан с t1, как это могли ожидать остальные столбцы и зефир? Если я удалю (Transaction.amount - Transaction.amount_refunded).alias('net_amount'), из запроса и из класса, он будет работать только с одним созданным столбцом.