Обновление нужного массива в столбце с помощью peewee

Всех приветствую, у моего столбца, атрибут массива, и тип Bigint

statistics = ArrayField(BigIntegerField, default=[0, 0, 0, 0, 0, 0])

В документации, посмотрел пример, как отправлять запрос на обновление:

PageView = Table('page_views')
query = (PageView
         .update({PageView.c.page_views: PageView.c.page_views + 1})
         .where(PageView.c.url == url))
query.execute(database)

Моя попытка:

await db.execute(MarriagePlayer.update({
            MarriagePlayer.statistics[0]: MarriagePlayer.statistics[0] + 1
        }).where(
            MarriagePlayer.chat_id == msg.receiver_id,
            MarriagePlayer.user_id << [msg.sender_id, p.loved]))

Но я получаю ошибку:

MarriagePlayer.statistics[0]: MarriagePlayer.statistics[0] + 1

TypeError: unhashable type: 'ObjectSlice'

Вопрос: как правильно обновить нужный мне массив при этом избежать этой ошибки?


Ответы (1 шт):

Автор решения: Cookie

Существовала недостающая реализация метода, которая не позволяла использовать выражения секций в качестве ключей dict. Это теперь исправлено в master:

https://github.com/coleifer/peewee/commit/7eb7498018b4265ce7e79c3e2b0b90a93d622d45

Исправление будет включено в следующую версию.

→ Ссылка