2012-03-23 3 views
1

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

@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) 

Любые идеи, помощь в заранее

+0

Отправитель и экземпляр из объекта LogEntry? <класс 'django.contrib.admin.models.LogEntry'> Объект LogEntry – PuercoPop

ответ

4

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

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

Смежные вопросы