2015-11-26 2 views
1

Я новичок в django, я получаю ошибку на следующем коде, я думаю, это очень просто, но я действительно не могу понять это.django 'int' объект не имеет атрибута 'save'

from django.db.models.signals import post_save 
from django.dispatch import receiver 

from myapp.models import MyModel1, MyModel2 


@receiver(post_save, sender=MyModel1) 
def test_signal(sender, **kwargs): 
    #import pdb;pdb.set_trace(); 
    if kwargs['instance']: 
     instance = kwargs['instance'] 

     if instance.old_processed_value == False and instance.processed == True: 
      var1 = MyModel2.objects.get(val1= instance.val1, val2 = instance.val2) 
      var2 = var1.quantity+instance.qty_change 
      var2.save() 
+5

Я думаю, что это должно быть: 'var1.quantity + = instance.qty_change', а затем' var1.save() ' –

+0

Прочитать сообщение об ошибке. Кажется, что 'var2' является' int'. Он не может иметь метод 'save()'. – mshsayem

+0

его рабочий, вы можете вставить свой комментарий в качестве ответа. @Andres Perez-Albela – RTan

ответ

1

Я думаю, что это должно быть:

var1.quantity += instance.qty_change 
var1.save() 
0
var1 = MyModel2.objects.get(val1= instance.val1, val2 = instance.val2) 

var1 является MyModel2 объект, плохое имя метода

var1 имеет сохранить(), но var2 является ИНТ Валуа, так произошла ошибка

то, что вы хотите сделать, может быть:

model2_obj = MyModel2.objects.get(val1= instance.val1, val2 = instance.val2) 
model2_obj.quantity+instance.qty_change 
model2_obj.save() 
Смежные вопросы