2009-02-05 11 views
1

Après avoir obtenu une bonne réponse à mon previous question, je suis tombé sur un autre problème.Django: récupérer des modèles dérivés de l'abstrait

J'ai suivi le third approach, étant conscient de ce que disent les djangodocs à propos de abstract model subclassing.

J'utilise le dernier Django, rev 9814. Le comportement étrange que je reçois:

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) 

Répondre

0

Ok, ma faute (de "Ne blâmez pas le SQL" à nouveau la Pragmatique Progamme). C'était exactement ce que disait traceback, oublié __init__ args & kwagrs. Que je suis bête.

Questions connexes