Django - Переопределение Model.create () метод?

Документы Django только перечисляют примеры для переопределения save() и delete(). Однако я хотел бы определить некоторую дополнительную обработку для своих моделей только, когда они создаются. Для любого знакомого с направляющими, это был бы эквивалент созданию a :before_create фильтр. Действительно ли это возможно?

70
задан zaidfazil 30 May 2017 в 13:56
поделиться

2 ответа

Переопределение __ 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)
139
ответ дан 24 November 2019 в 13:17
поделиться

Переопределение __ init __ () позволит вам выполнять код при создании экземпляра модели. Не забудьте вызвать родительский метод __ init __ () .

3
ответ дан 24 November 2019 в 13:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: