2009-02-05 4 views
1

previous question에 대한 정답을 얻은 후에 다른 문제가 발생했습니다.Django : 추상 파생 모델 검색

나는 third approach을 따라 갔으며, 장장은 abstract model subclassing에 대해 알고 있습니다. 내가 장고 최신을 사용하고

, 이상한 행동 내가 얻을 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__의 args & kwagrs을 잊어 버렸습니다. 바보 나.