2009-02-05 67 views
1

在我的previous question得到了很好的答案後,我遇到了另一個問題。Django:檢索抽象派生模型

我跟着third approach,意識到djangodocs說的abstract model subclassing

我使用的是最新的Django,轉速9814.奇怪的行爲,我得到:

In [1]: o = Order() 

In [2]: o.save() 
DEBUG:root:STORING EVENT MESSAGE: Order created. pk=2 -- LEVEL TOP 
DEBUG:root:Saving order pk=2 

# it actually does exist in the database, so everything's cool. 

In [3]: o.id 
Out[3]: 2L # huh? 

In [4]: o._default_manager 
Out[4]: <django.db.models.manager.Manager object at 0x16e5370> 

In [5]: Order.objects.all() 
Out[5]: [] 

# WTF? and even more WTF below: 

In [6]: Order.objects.get(id=2) 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 

/Users/adam/_dev/cashfire/<ipython console> 

/opt/local/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/django/db/models/manager.py in get(self, *args, **kwargs) 
    91 
    92  def get(self, *args, **kwargs): 
---> 93   return self.get_query_set().get(*args, **kwargs) 
    94 
    95  def get_or_create(self, **kwargs): 

/opt/local/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/django/db/models/query.py in get(self, *args, **kwargs) 
    333   """ 
    334   clone = self.filter(*args, **kwargs) 
--> 335   num = len(clone) 
    336   if num == 1: 
    337    return clone._result_cache[0] 

/opt/local/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/django/db/models/query.py in __len__(self) 
    159     self._result_cache = list(self._iter) 
    160    else: 
--> 161     self._result_cache = list(self.iterator()) 
    162   elif self._iter: 
    163    self._result_cache.extend(list(self._iter)) 

/opt/local/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/django/db/models/query.py in iterator(self) 
    286    else: 
    287     # omit aggregates in object creation 
--> 288     obj = self.model(*row[index_start:aggregate_start]) 
    289 
    290    for i, k in enumerate(extra_select): 

TypeError: __init__() takes exactly 1 argument (5 given) 

回答

0

好吧,我的錯(語用Progammer的「不要責怪SQL」了)。 正是這個回溯說的,忘了__init__的參數& kwagrs。傻我。