Я использую расширение Playhouse для Peewee , в частности, сигналы, чтобы я мог использовать @pre_save
и @post_save
хуки.
Я настроил его так, как говорят документы, но по какой-то причине исключения по-прежнему генерируются.
Выдержка из кода:
from playhouse.signals import pre_save
from db.config import BaseModel
class Card(BaseModel):
name = CharField(max_length=18)
slug = CharField(max_length=18)
published = BooleanField(default=False)
category = ForeignKeyField(Category, backref='cards')
@pre_save(sender=Card)
def card_pre_save(model, instance, created):
print('testing hook')
if created:
instance.slug = slugify(instance.name)
Я создаю экземпляр как таковой:
from db import models as m
card = m.Card(
name=new_card_name,
category=category,
published=False
)
card.save()
And this is the error I'm getting:
peewee.IntegrityError: null value in column "slug" violates not-null constraint
DETAIL: Failing row contains (2, 2019-02-04 05:41:57.111115, 2019-02-04 05:41:37.75196, cool11, null, f, 2).
Я не понимаю, как я мог бы получить IntegrityError
, если я заполняю поле slug
в хуке.Другая проблема заключается в том, что даже оператор print()
из ловушки pre_save
не выполняется.
В любом случае, я мог бы неправильно это настроить?