Save() missing 1 required positional argument: 'tran'
Мой метод save() выдает ошибку: save() missing 1 required positional argument: 'tran'
.
Я переопределил метод save() в модели "Transactions" следующим образом:
def save(self,D,tran):
self.DATE=D
self.TYPE=tran.SERVICE_CODE
self.SUCCESS=tran['Success']
self.TECHNICAL_DECLINES=tran['Technical_declines']
self.BUSINESS_DECLINES=tran['Business_declines']
self.TOTAL=self.SUCCESS+self.TECHNICAL_DECLINES+self.BUSINESS_DECLINES
self.PERCENTAGE_TECH_DEC=((T/(self.TOTAL))*100)
super(Transactions,self).save()
где tran
аргументом в save() является объект словаря, переданный из views. Обратите внимание, что я также пробовал super(Transactions,self).save(D,tran)
в последней строке save()
.
views.py
def fetch():
DATE=datetime.datetime.now()
print(DATE)
status=Transactions.objects
obj=wf()
for tran in obj:
print(tran)
Transactions.save(DATE,tran)
return Transactions.objects.all()
Здесь wf() - это функция извлечения объекта базы данных из модели. Из вывода print(tran)
видно, что объект db_object извлекается без каких-либо проблем.
вывод функции print():
{'SERVICE_CODE': 'APY', 'Success': 1, 'Technical_declines': 0, 'Business_declines': 0}
Я не понимаю, где пропущен аргумент tran
.
Как указал @deceze, вы вызываете метод save() на классе Transactions, а не на экземпляре транзакции, который вы хотите сохранить. Вам нужно вызвать save на экземпляре
def fetch():
DATE=datetime.datetime.now()
print(DATE)
status=Transactions.objects
obj=wf()
for tran in obj:
print(tran)
tran.save(DATE,tran)
return Transactions.objects.all()
Также в вашем методе сохранения вы используете точечную нотацию для доступа к записи в dict, это не будет работать.
self.TYPE=tran.SERVICE_CODE
self.TYPE=tran["SERVICE_CODE"]