AttributeError: невозможно установить атрибут. из зефира под псевдонимом «крошка»Python

Программы на Python
Ответить
Anonymous
 AttributeError: невозможно установить атрибут. из зефира под псевдонимом «крошка»

Сообщение Anonymous »

У меня такой крохотный запрос

Код: Выделить всё

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())
)
а затем эта сериализация с использованием marshmallow

Код: Выделить всё

            schema = TransactionCSVSchema(many=True)
serialized_data = schema.dump(transaction_base)
и это мой урок по зефиру

Код: Выделить всё

class TransactionCSVSchema(Schema):
PaymentDate = fields.DateTime(attribute="created")
NetAmount = fields.Float(attribute="net_amount")
и выдает эту ошибку

Код: Выделить всё

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'), из запроса и из класса, он будет работать только с одним созданным столбцом.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ewee-alias
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»