Reputation: 5487
I've run into an error while trying to use the tagging package in my app.
Cannot resolve keyword 'items' into field. Choices are: id, name
Which is coming from this line of code:
current_tags = list(self.filter(items__content_type__pk=ctype.pk,
items__object_id=obj.pk))
Here is the full traceback:
Request Method: POST
Request URL: http://localhost:8000/admin/coltrane/entry/add/
Django Version: 1.7
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'django.contrib.flatpages',
'search',
'coltrane',
'markdown')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Library/Python/2.7/site-packages/django/contrib/admin/options.py" in wrapper
567. return self.admin_site.admin_view(view)(*args, **kwargs)
File "/Library/Python/2.7/site-packages/django/utils/decorators.py" in _wrapped_view
105. response = view_func(request, *args, **kwargs)
File "/Library/Python/2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
52. response = view_func(request, *args, **kwargs)
File "/Library/Python/2.7/site-packages/django/contrib/admin/sites.py" in inner
204. return view(request, *args, **kwargs)
File "/Library/Python/2.7/site-packages/django/contrib/admin/options.py" in add_view
1437. return self.changeform_view(request, None, form_url, extra_context)
File "/Library/Python/2.7/site-packages/django/utils/decorators.py" in _wrapper
29. return bound_func(*args, **kwargs)
File "/Library/Python/2.7/site-packages/django/utils/decorators.py" in _wrapped_view
105. response = view_func(request, *args, **kwargs)
File "/Library/Python/2.7/site-packages/django/utils/decorators.py" in bound_func
25. return func.__get__(self, type(self))(*args2, **kwargs2)
File "/Library/Python/2.7/site-packages/django/db/transaction.py" in inner
394. return func(*args, **kwargs)
File "/Library/Python/2.7/site-packages/django/contrib/admin/options.py" in changeform_view
1388. self.save_model(request, new_object, form, not add)
File "/Library/Python/2.7/site-packages/django/contrib/admin/options.py" in save_model
1029. obj.save()
File "/Library/Python/2.7/site-packages/django/db/models/base.py" in save
590. force_update=force_update, update_fields=update_fields)
File "/Library/Python/2.7/site-packages/django/db/models/base.py" in save_base
627. update_fields=update_fields, raw=raw, using=using)
File "/Library/Python/2.7/site-packages/django/dispatch/dispatcher.py" in send
198. response = receiver(signal=self, sender=sender, **named)
File "/Users/byrd/Virtual_env_new/lib/python2.7/site-packages/tagging/fields.py" in _save
81. Tag.objects.update_tags(kwargs['instance'], tags)
File "/Users/byrd/Virtual_env_new/lib/python2.7/site-packages/tagging/models.py" in update_tags
34. items__object_id=obj.pk))
File "/Library/Python/2.7/site-packages/django/db/models/manager.py" in manager_method
92. return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/Library/Python/2.7/site-packages/django/db/models/query.py" in filter
691. return self._filter_or_exclude(False, *args, **kwargs)
File "/Library/Python/2.7/site-packages/django/db/models/query.py" in _filter_or_exclude
709. clone.query.add_q(Q(*args, **kwargs))
File "/Library/Python/2.7/site-packages/django/db/models/sql/query.py" in add_q
1287. clause, require_inner = self._add_q(where_part, self.used_aliases)
File "/Library/Python/2.7/site-packages/django/db/models/sql/query.py" in _add_q
1314. current_negated=current_negated, connector=connector)
File "/Library/Python/2.7/site-packages/django/db/models/sql/query.py" in build_filter
1138. lookups, parts, reffed_aggregate = self.solve_lookup_type(arg)
File "/Library/Python/2.7/site-packages/django/db/models/sql/query.py" in solve_lookup_type
1076. _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta())
File "/Library/Python/2.7/site-packages/django/db/models/sql/query.py" in names_to_path
1383. self.raise_field_error(opts, name)
File "/Library/Python/2.7/site-packages/django/db/models/sql/query.py" in raise_field_error
1389. "Choices are: %s" % (name, ", ".join(available)))
Exception Type: FieldError at /admin/coltrane/entry/add/
Exception Value: Cannot resolve keyword 'items' into field. Choices are: id, name
Here is the model for Tagging "items is the related_name"
@python_2_unicode_compatible
class Tag(models.Model):
"""
A tag.
"""
name = models.CharField(_('name'), max_length=50, unique=True, db_index=True)
objects = TagManager()
class Meta:
ordering = ('name',)
verbose_name = _('tag')
verbose_name_plural = _('tags')
def __str__(self):
return self.name
@python_2_unicode_compatible
class TaggedItem(models.Model):
"""
Holds the relationship between a tag and the item being tagged.
"""
tag = models.ForeignKey(Tag, verbose_name=_('tag'), related_name='items')
content_type = models.ForeignKey(ContentType, verbose_name=_('content type'))
object_id = models.PositiveIntegerField(_('object id'), db_index=True)
object = generic.GenericForeignKey('content_type', 'object_id')
objects = TaggedItemManager()
class Meta:
# Enforce unique tag association per object
unique_together = (('tag', 'content_type', 'object_id'),)
verbose_name = _('tagged item')
verbose_name_plural = _('tagged items')
def __str__(self):
return '%s [%s]' % (smart_text(self.object), smart_text(self.tag))
Upvotes: 0
Views: 3126
Reputation: 51
I encountered this problem before.
It was because I forgot including the 'tagging' app into the INSTALLED_APP tuple of 'settings.py' for my site besides installing the 'tagging' app on the machine.
Hope it helps
Upvotes: 1
Reputation: 20828
For a Tag()
to get all TaggedItem()
objects where a specific Tag()
is a ForeignKey
on the TaggedItem()
objects, you would want to access it as:
tag = Tag.objects.get(pk=1) # for example
tag.taggeditem_set() # returns all related taggeditems
Here is the related Django Docs:
https://docs.djangoproject.com/en/dev/ref/models/relations/
Upvotes: 0