id summary reporter owner description type status component version severity resolution keywords cc stage has_patch needs_docs needs_tests needs_better_patch easy ui_ux 24852 Related Field got invalid lookup: offer_ptr Sergey Gornostaev nobody "I have this models in my project: {{{#!python class Category(MPTTModel): parent = TreeForeignKey('self', verbose_name=_(""Parent""), null=True, blank=True, related_name='children') name = models.CharField(_(""Name""), max_length=50) class Offer(models.Model): category = TreeForeignKey(Category, verbose_name=_(""Category"")) title = models.CharField(_(""Name""), max_length=100) class Goods(Offer): recommended_goods = models.ManyToManyField('self', verbose_name=_(""Recommended goods""), related_name='+', blank=True, null=True) recommended_categories = TreeManyToManyField(Category, verbose_name=_(""Recommended categories""), related_name='+', blank=True, null=True) class Promotion(models.Model): title = models.CharField(_('Title'), max_length=50) description = models.TextField(_(""Description"")) active_from = models.DateTimeField(_(""Active from date"")) active_till = models.DateTimeField(_(""Active till date"")) promotional_categories = models.ManyToManyField(Category, verbose_name=_(""Categories""), related_name='+', blank=True, null=True) promotional_items = models.ManyToManyField(Offer, verbose_name=_(""Goods""), related_name='+', blank=True, null=True) }}} When I try to execute **goods.recommended_categories.all()**, it causes an error ""Related Field got invalid lookup: offer_ptr"" It began after the field promotional_categories has been added to the Promotion model. But how that can affect on querying Categories from m2m relation in Goods? Traceback: {{{ Environment: Request Method: GET Request URL: http://127.0.0.1:8000/shop/offer/23000/ Django Version: 1.7.8 Python Version: 2.7.5 Installed Applications: ('django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'suit', 'django.contrib.admin', 'django.contrib.admindocs', 'django.contrib.sitemaps', 'django.contrib.humanize', 'django.contrib.flatpages', 'django.contrib.redirects', 'reversion', 'djangosphinx', 'registration', 'mptt', 'django_mptt_admin', 'compressor', 'django_geoip', 'django_select2', 'accounts', 'newslines', 'vacancies', 'faq', 'articles', 'storage', 'gallery', 'banners', 'portfolio', 'polls', 'shop.catalog', 'shop.basket', 'shop.reviews', 'promotions', 'synchronizer', 'comments', 'debug_toolbar') Installed Middleware: ('debug_toolbar.middleware.DebugToolbarMiddleware', 'django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.redirects.middleware.RedirectFallbackMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.sites.middleware.CurrentSiteMiddleware', 'core.middleware.MaintenanceMiddleware', 'core.middleware.ProtectAdminSiteMiddleware', 'django.contrib.admindocs.middleware.XViewMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware') Traceback: File ""C:\Python\lib\site-packages\django\core\handlers\base.py"" in get_response 104. response = middleware_method(request, callback, callback_args, callback_kwargs) File ""C:\Python\lib\site-packages\debug_toolbar\middleware.py"" in process_view 77. response = panel.process_view(request, view_func, view_args, view_kwargs) File ""C:\Python\lib\site-packages\debug_toolbar\panels\profiling.py"" in process_view 134. return self.profiler.runcall(view_func, *args, **view_kwargs) File ""C:\Python\lib\cProfile.py"" in runcall 149. return func(*args, **kw) File ""C:\Python\lib\site-packages\django\views\decorators\http.py"" in inner 41. return func(request, *args, **kwargs) File ""Z:\Projects\terminal-dev\shop\catalog\views.py"" in show_offer 484. for recommendation in goods.recommended_categories.all(): File ""C:\Python\lib\site-packages\django\db\models\manager.py"" in all 191. return self.get_queryset() File ""C:\Python\lib\site-packages\django\db\models\fields\related.py"" in get_queryset 885. return qs._next_is_sticky().filter(**self.core_filters) File ""C:\Python\lib\site-packages\django\db\models\query.py"" in filter 691. return self._filter_or_exclude(False, *args, **kwargs) File ""C:\Python\lib\site-packages\django\db\models\query.py"" in _filter_or_exclude 709. clone.query.add_q(Q(*args, **kwargs)) File ""C:\Python\lib\site-packages\django\db\models\sql\query.py"" in add_q 1331. clause, require_inner = self._add_q(where_part, self.used_aliases) File ""C:\Python\lib\site-packages\django\db\models\sql\query.py"" in _add_q 1358. current_negated=current_negated, connector=connector) File ""C:\Python\lib\site-packages\django\db\models\sql\query.py"" in build_filter 1225. lookups, value) File ""C:\Python\lib\site-packages\django\db\models\fields\related.py"" in get_lookup_constraint 1577. raise TypeError('Related Field got invalid lookup: %s' % lookup_type) Exception Type: TypeError at /shop/offer/23000/ Exception Value: Related Field got invalid lookup: offer_ptr }}} I was confused by this lines displayed in traceback interactive view: {{{ C:\Python\lib\site-packages\django\db\models\sql\query.py in _add_q: 1356. child_clause, needed_inner = self.build_filter( 1357. child, can_reuse=used_aliases, branch_negated=branch_negated, 1358. current_negated=current_negated, connector=connector) Local vars: used_aliases set([u'catalog_category', u'promotions_promotion', u'promotions_promotion_promotional_categories']) child (u'+__offer_ptr', 23000) }}} What's used_aliases?" Bug closed Database layer (models, ORM) 1.7 Normal needsinfo Unreviewed 0 0 0 0 0 0