Django 为什么prefetch_related()会引发AttributeError?

Django 为什么prefetch_related()会引发AttributeError?,django,django-queryset,django-hvad,Django,Django Queryset,Django Hvad,我有一个与第二个模型有多对多关系的模型。当我尝试使用预回迁时,我会得到一个AttributeError。这些模型可概括为: class AcademicSubject(TranslatableModel): translations = TranslatedFields( name = CharField(max_length=255) ) class UserProfile(Model): user = OneToOneField(settings.A

我有一个与第二个模型有多对多关系的模型。当我尝试使用预回迁时,我会得到一个AttributeError。这些模型可概括为:

class AcademicSubject(TranslatableModel):
    translations = TranslatedFields(
        name = CharField(max_length=255)
    )

class UserProfile(Model):
    user = OneToOneField(settings.AUTH_USER_MODEL)
    # ... other fields
    subjects = ManyToManyField(AcademicSubject, blank=True)
(省略了各种细节)。
translateablemodel
translateedfields
都是源代码,虽然我不认为它们在这种情况下很重要,但我不是100%确定,所以我想我应该包括它们

我尝试迭代的查询集是:

UserProfile.objects.all().select_related('user').prefetch_related('subjects')
我得到的stacktrace是:

Traceback:
File "/home/hamish/dev/django/website/.ve/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/hamish/dev/django/website/.ve/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
  105.                     response = view_func(request, *args, **kwargs)
File "/home/hamish/dev/django/website/.ve/local/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  52.         response = view_func(request, *args, **kwargs)
File "/home/hamish/dev/django/website/.ve/local/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner
  206.             return view(request, *args, **kwargs)
File "/home/hamish/dev/django/website/.ve/local/lib/python2.7/site-packages/django/views/generic/base.py" in view
  69.             return self.dispatch(request, *args, **kwargs)
File "/home/hamish/dev/django/website/.ve/local/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
  87.         return handler(request, *args, **kwargs)
File "/home/hamish/dev/django/website/mentor_reports/views.py" in get
  45.         for item in self.get_queryset():
File "/home/hamish/dev/django/website/.ve/local/lib/python2.7/site-packages/django/db/models/query.py" in __iter__
  141.         self._fetch_all()
File "/home/hamish/dev/django/website/.ve/local/lib/python2.7/site-packages/django/db/models/query.py" in _fetch_all
  968.             self._prefetch_related_objects()
File "/home/hamish/dev/django/website/.ve/local/lib/python2.7/site-packages/django/db/models/query.py" in _prefetch_related_objects
  611.         prefetch_related_objects(self._result_cache, self._prefetch_related_lookups)
File "/home/hamish/dev/django/website/.ve/local/lib/python2.7/site-packages/django/db/models/query.py" in prefetch_related_objects
  1791.                 obj_list, additional_lookups = prefetch_one_level(obj_list, prefetcher, lookup, level)
File "/home/hamish/dev/django/website/.ve/local/lib/python2.7/site-packages/django/db/models/query.py" in prefetch_one_level
  1906.         rel_attr_val = rel_obj_attr(rel_obj)
File "/home/hamish/dev/django/website/.ve/local/lib/python2.7/site-packages/django/db/models/fields/related.py" in <lambda>
  912.                     lambda result: tuple(getattr(result, '_prefetch_related_val_%s' % f.attname) for f in fk.local_related_fields),
File "/home/hamish/dev/django/website/.ve/local/lib/python2.7/site-packages/django/db/models/fields/related.py" in <genexpr>
  912.                     lambda result: tuple(getattr(result, '_prefetch_related_val_%s' % f.attname) for f in fk.local_related_fields),

Exception Type: AttributeError at /en/admin/user_report
Exception Value: 'AcademicSubject' object has no attribute '_prefetch_related_val_userprofile_id'
回溯:
get_响应中的文件“/home/hamish/dev/django/website/.ve/local/lib/python2.7/site packages/django/core/handlers/base.py”
111响应=包装的回调(请求,*回调参数,**回调参数)
视图中的文件“/home/hamish/dev/django/website/.ve/local/lib/python2.7/site packages/django/utils/decorators.py”
105响应=查看功能(请求,*args,**kwargs)
文件“/home/hamish/dev/django/website/.ve/local/lib/python2.7/site-packages/django/views/decorators/cache.py”位于
52响应=查看功能(请求,*args,**kwargs)
文件“/home/hamish/dev/django/website/.ve/local/lib/python2.7/site packages/django/contrib/admin/sites.py”,位于内部
206返回视图(请求、*args、**kwargs)
视图中的文件“/home/hamish/dev/django/website/.ve/local/lib/python2.7/site packages/django/views/generic/base.py”
69返回自调度(请求,*args,**kwargs)
文件“/home/hamish/dev/django/website/.ve/local/lib/python2.7/site packages/django/views/generic/base.py”在dispatch中
87返回处理程序(请求、*args、**kwargs)
get中的文件“/home/hamish/dev/django/website/mentor_reports/views.py”
45对于self.get_queryset()中的项:
文件“/home/hamish/dev/django/website/.ve/local/lib/python2.7/site packages/django/db/models/query.py”位于__
141self._fetch_all()
文件“/home/hamish/dev/django/website/.ve/local/lib/python2.7/site packages/django/db/models/query.py”位于
968self.\u预取\u相关\u对象()
文件“/home/hamish/dev/django/website/.ve/local/lib/python2.7/site packages/django/db/models/query.py”位于预回迁相关对象中
611预取\相关\对象(自。\结果\缓存、自。\预取\相关\查找)
预回迁相关对象中的文件“/home/hamish/dev/django/website/.ve/local/lib/python2.7/site packages/django/db/models/query.py”
1791obj_列表,附加_查找=预取_一级(obj_列表,预取器,查找,级别)
预回迁级别的文件“/home/hamish/dev/django/website/.ve/local/lib/python2.7/site packages/django/db/models/query.py”
1906rel_attr_val=rel_obj_attr(rel_obj)
文件“/home/hamish/dev/django/website/.ve/local/lib/python2.7/site packages/django/db/models/fields/related.py”
912lambda result:tuple(fk.local\u related\u字段中f的getattr(结果,'.\u预取\u related\u val\u%s'%f.attname)),
文件“/home/hamish/dev/django/website/.ve/local/lib/python2.7/site packages/django/db/models/fields/related.py”
912lambda result:tuple(fk.local\u related\u字段中f的getattr(结果,'.\u预取\u related\u val\u%s'%f.attname)),
异常类型:AttributeError at/en/admin/user\u报告
异常值:“AcademicSubject”对象没有属性“\u prefetch\u related\u val\u userprofile\u id”
我正在使用Django 1.7


我的设置中有什么地方看起来不正确吗?

类UserProfile(Model)
之后缺少一个冒号,但我可以反复使用该查询设置。你能发布一些其他细节吗?