Документы Django только перечисляют примеры для переопределения save()
и delete()
. Однако я хотел бы определить некоторую дополнительную обработку для своих моделей только, когда они создаются. Для любого знакомого с направляющими, это был бы эквивалент созданию a :before_create
фильтр. Действительно ли это возможно?
Переопределение __ init __ ()
приведет к тому, что код будет выполняться всякий раз, когда создается представление объекта на языке Python. Я не знаю рельсов, но фильтр : before_created
мне кажется, что это код, который должен выполняться при создании объекта в базе данных. Если вы хотите выполнить код при создании нового объекта в базе данных, вы должны переопределить save ()
, проверяя, имеет ли объект атрибут pk
или нет. Код будет выглядеть примерно так:
def save(self, *args, **kwargs):
if not self.pk:
# This code only happens if the objects is
# not in the database yet. Otherwise it would
# have pk
super(MyModel, self).save(*args, **kwargs)
Переопределение __ init __ ()
позволит вам выполнять код при создании экземпляра модели. Не забудьте вызвать родительский метод __ init __ ()
.