Skip to main content
 首页 » 编程设计

python之类型错误 : instancemethod expected at least 2 arguments, 得到 0

2025年05月04日10xxx_UU

Django 1.1.2 & Python 2.6.5

在执行看似无害的查询集时,我不断收到此错误。看起来与 http://code.djangoproject.com/ticket/7204 中描述的问题完全一样但是,我正在运行 Django 1.1.2,它应该修复了这个错误。有没有人处理过类似的事情?

下面是构造查询的代码:

def get_some_data(self, start_date, end_date): 
    qset = Transaction.txn_objects.get_transactions_between(self.business, 
                                                            start_date,  
                                                            end_date) 
    income_qset = qset.filter(invoiceitem__invoice__customer = self) 
    income_qset = income_qset.exclude( 
                    account=F("invoiceitem__taxtypes__account_payable")) 
    sums = income_qset.aggregate(models.Sum('credit_amount')) # fails here 

这是回溯的简化版本(不是很有用):

File ".../models.py" in get_income_between 
  200.         sums = income_qset.aggregate(models.Sum('credit_amount')) 
File ".../lib/python2.6/site-packages/django/db/models/query.py" in aggregate 
  274.         query = self.query.clone() 
File ".../lib/python2.6/site-packages/django/db/models/sql/query.py" in clone 
  201.         obj.where = deepcopy(self.where, memo=memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  173.                 y = copier(memo) 
File ".../lib/python2.6/site-packages/django/utils/tree.py" in __deepcopy__ 
  61.         obj.children = deepcopy(self.children, memodict) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_list 
  228.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  173.                 y = copier(memo) 
File ".../lib/python2.6/site-packages/django/utils/tree.py" in __deepcopy__ 
  61.         obj.children = deepcopy(self.children, memodict) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_list 
  228.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  173.                 y = copier(memo) 
File ".../lib/python2.6/site-packages/django/utils/tree.py" in __deepcopy__ 
  61.         obj.children = deepcopy(self.children, memodict) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_list 
  228.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  173.                 y = copier(memo) 
File ".../lib/python2.6/site-packages/django/utils/tree.py" in __deepcopy__ 
  61.         obj.children = deepcopy(self.children, memodict) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_list 
  228.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_tuple 
  235.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_tuple 
  235.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_tuple 
  235.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_tuple 
  235.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_tuple 
  235.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_tuple 
  235.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_tuple 
  235.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_tuple 
  235.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_tuple 
  235.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_tuple 
  235.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_tuple 
  235.         y.append(deepcopy(a, memo)) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  338.             state = deepcopy(state, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  162.         y = copier(x, memo) 
File "/usr/lib/python2.6/copy.py" in _deepcopy_dict 
  255.         y[deepcopy(key, memo)] = deepcopy(value, memo) 
File "/usr/lib/python2.6/copy.py" in deepcopy 
  189.                 y = _reconstruct(x, rv, 1, memo) 
File "/usr/lib/python2.6/copy.py" in _reconstruct 
  323.     y = callable(*args) 
File "/usr/lib/python2.6/copy_reg.py" in __newobj__ 
  93.     return cls.__new__(cls, *args) 
 
Exception Type: TypeError at /reports/income_expense/by_customer/32/ 
Exception Value: instancemethod expected at least 2 arguments, got 0 

请您参考如下方法:

为了其他可能遇到此问题的人的利益,错误是由使用 django-multilingual 和 django.db 的 F 对象的组合引起的。重写代码以消除 F 对象解决了这个问题。

根本原因实际上是 Python 中的错误,有关详细信息,请参阅 http://bugs.python.org/issue1515