Używam django-taggit i natrafiłem na problem podczas próby filtrowania między relacjami.Głębokie zapytanie dotyczące relacji django-taggit
posiadający następujące modele:
class Artist(models.Model):
tags = TaggableManager()
class Gig(models.Model):
artist = models.ManyToManyField(Artist)
Co chciałbym osiągnąć to uzyskać wszystkie koncerty, który znajduje artysty (s) mają określony znacznik.
myślałem, że to będzie łatwe i ochoczo napisał:
Gig.objects.filter(artist__tags__name__in=["rock"])
co dało mi:
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
Widzę, że opublikowałeś to kilka miesięcy temu. Czy rozwiązałeś to? – avatar
Przepraszamy za spóźnioną odpowiedź. Nigdy tego nie rozwiązałem. Właśnie przełączyłem się na tagowanie django, co umożliwiło takie zachowanie. Ale muszę was ostrzec o jego strukturze API w porównaniu do django-taggit. Wciąż ma jakąś dobrze dopracowaną dokumentację. –
Dziękuję za odpowiedź! – avatar