@classmethod
async def test_get_expiring_offers(cls) -> typing.Iterable[typing.Self]:
# Получаем статус последней нотификации, чтобы не плодить дубликаты
last_notification_subquery = (OfferNotification.select(
OfferNotification.offer_id, OfferNotification.notification_type
).order_by(OfferNotification.created_at.desc()))
relevant_offers_query = (
cls.select(
Offer,
last_notification_subquery.c.notification_type.alias('last_notification_type')
).join(last_notification_subquery, join_type=JOIN.LEFT_OUTER, on=(cls.id == last_notification_subquery.c.offer_id))
.switch(cls)
)
return list(await manager.execute(relevant_offers_query))
То есть получить заказ + его последнюю созданное уведомление.
Мечта - посмотреть статус последнего уведомления через offer.last_notification_type
Мечта пока не сбылась:
AttributeError: 'Offer' object has no attribute 'last_notification_type'
Что делать?
не вижу вообще в коде никакого образения к last_notification_type. Ты уверен что ошибка тут?
Фактически, твой ответ - (Offer, last_notification_type)
test_offers = await offer.test_get_expiring_offers() offer = test_offers[0] print('offer info', offer, offer.last_notification_type) Потом здесь ошибку выдает, это из тесткейса
Выведи offer на печать
[<Offer: 28e6681d-29b9-4d1e-b800-e99ce75d8947>]
что за manager?
manager = peewee_async.Manager(pg_db)
Обсуждают сегодня