2

看来我已经通过升级到 Django 1.6 解决了这个问题。只是好奇,到底是怎么回事。

我正在尝试将OSQA与现有的 Django 应用程序集成,但遇到了一些非常微妙的问题。看看——这是一个 PDB 会话,没有多重继承:

(Pdb) p type(self.get_query_set())
<class 'django.db.models.query.QuerySet'>
(Pdb) p type(self.get_queryset())
<class 'forum.models.node.NodeQuerySet'>

在 Django 1.5 中,默认的方法django.db.models.ManagerallMyModel.objects.all())指向get_query_set(). 在 Django 1.6 中,同样的方法指向,因为,我猜,已经被弃用了。顺便说一句,这是 同一文件的行。128django/db/models/manager.pyget_querysetget_query_set133

事实上,OSQA 在 Django 1.5 中被破坏了它失败了 *** AttributeError: AttributeError("'QuerySet' object has no attribute 'filter_state'",),因为在forum/views/readers.py, line207中,它确实

questions = initial.filter_state(deleted=False),并且没有这样的功能。在这种情况下,它作为 传递Question.objects.all()initial但不知何故它最终是django.db.models.query.QuerySet而不是 forum.models.node.NodeQuerySet,它确实具有所需的方法。

(Pdb) from forum.models import Question (Pdb) type(Question.objects.all()) <class 'django.db.models.query.QuerySet'> (Pdb) type(Question.objects.get_queryset()) <class 'forum.models.node.NodeQuerySet'> (Pdb) type(Question.objects.get_query_set()) <class 'django.db.models.query.QuerySet'>

4

0 回答 0