#24852: Related Field got invalid lookup: offer_ptr
----------------------------------------------+--------------------
Reporter: TheDeadOne | Owner: nobody
Type: Bug | Status: new
Component: Database layer (models, ORM) | Version: 1.7
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
----------------------------------------------+--------------------
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?
--
Ticket URL: <https://code.djangoproject.com/ticket/24852>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/053.14f526a298d09609d0825ec0c3fa6b03%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.