Передача параметра self в обратный вызов django - PullRequest
1 голос
/ 24 марта 2012

Я хочу проверить, будут ли атрибуты модели make_initial_plan, make_default_plan быть установленными в модели безопасными, и если это так, чтобы сбросить все атрибуты во всех других экземплярах модели, но я не знаю, как передать параметр self на обратный звонок

@receiver(pre_save)
def desactivar_default_o_initial(sender, instance, **kwargs):
    if self.make_initial_plan == True:
        for item in Plan.objects.all():
            item.make_initial_plan = False
            item.save(firstTimePass=False)
    if self.make_default_plan == True:
        for item in Plan.objects.all():
            item.make_default_plan = False
            item.save(firstTimePass=False)

Любые идеи, помогите заранее

1 Ответ

4 голосов
/ 24 марта 2012

В сигналах нет self, потому что они не являются методами класса. Вы должны использовать sender для получения класса, который посылает сигнал, и instance для самого объекта (т. Е. Это то, что вам нужно здесь)

Кроме того, я думаю, что вы должны предоставить sender аргумент для сигнального разъема. В текущей настройке ваш обработчик будет использоваться для любой модели django.

...