首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-taggit深度关系查询

django-taggit深度关系查询
EN

Stack Overflow用户
提问于 2011-07-03 08:10:40
回答 2查看 1.3K关注 0票数 5

我正在使用django-taggit,在尝试过滤关系时遇到了一个问题。

具有以下型号:

代码语言:javascript
复制
class Artist(models.Model):
     tags = TaggableManager()


class Gig(models.Model):
    artist = models.ManyToManyField(Artist)

我想要实现的是获得所有的演唱会谁的艺术家(S)有一个特定的标签。

我认为这会很容易,并急切地写道:

代码语言:javascript
复制
Gig.objects.filter(artist__tags__name__in=["rock"])

这给了我:

代码语言:javascript
复制
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/jonas/.virtualenvs/wsw/lib/python2.7/site-packages/django/db/models/manager.py", line  141, in filter
return self.get_query_set().filter(*args, **kwargs)
File "/home/jonas/.virtualenvs/wsw/lib/python2.7/site-packages/django/db/models/query.py", line 550, in filter
  return self._filter_or_exclude(False, *args, **kwargs)
File "/home/jonas/.virtualenvs/wsw/lib/python2.7/site-packages/django/db/models/query.py", line 568, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "/home/jonas/.virtualenvs/wsw/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1172, in add_q
can_reuse=used_aliases, force_having=force_having)
File "/home/jonas/.virtualenvs/wsw/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1139, in add_filter
process_extras=False)
File "/home/jonas/.virtualenvs/wsw/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1060, in add_filter
negate=negate, process_extras=process_extras)
File "/home/jonas/.virtualenvs/wsw/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1238, in setup_joins
"Choices are: %s" % (name, ", ".join(names)))
 FieldError: Cannot resolve keyword 'tagged_items' into field. Choices are: artist, date, id, location, url
EN

回答 2

Stack Overflow用户

发布于 2012-09-24 15:07:50

我设法通过在manage.py中注释掉TaggableManager.extra_filters()来修复它。

对此持保留态度,因为我不知道我这样做可能会打破什么。

票数 1
EN

Stack Overflow用户

发布于 2013-03-28 00:44:26

为谁是艺术家的所有演唱会都有一个特定的标签。

代码语言:javascript
复制
artists = Artist.objects.filter(tags__name__in=["rock"])
gigs = Gig.objects.filter(artist__in=artists)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6560287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档