【问题标题】:Django: retrieving abstract-derived modelsDjango:检索抽象派生模型
【发布时间】:2010-10-05 16:53:24
【问题描述】:

在我的previous question得到很好的回答后,我遇到了另一个问题。

我关注了third approach,了解 djangodocs 对abstract model subclassing 的评价。

我正在使用最新的 Django,rev 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)

【问题讨论】:

    标签: django django-models abstract-class


    【解决方案1】:

    好吧,我的错(实用程序员的“不要再责怪 SQL”)。 这正是 traceback 所说的,忘记了 __init__ 的 args 和 kwagrs。傻我。

    【讨论】:

      猜你喜欢
      • 2020-08-26
      • 2021-08-04
      • 1970-01-01
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 2012-09-25
      • 2023-04-11
      相关资源
      最近更新 更多