Как в django-taggit получить теги для объектов, которые связаны с конкретным пользователем?

У меня есть ряд объектов, связанных с конкретными пользователями, например:

from django.db import models
from django.contrib.auth.models import User
from taggit.managers import TaggableManager

class LibraryObject(models.Model):
    title = models.CharField(max_length=255)
    owner = models.ForeignKey(User)
    tags = TaggableManager()
    class Meta:
        abstract = True

class Book(LibraryObject):
    summary = models.TextField()

class JournalArticle(LibraryObject):
    excerpt = models.TextField()

# ...etc.

Я знаю, что могу получить все теги следующим образом:

>>> from taggit.models import Tag
>>> Tag.objects.all()

Но как я могу получить все теги, связанные с конкретным пользователем? Я представляю что-то вроде Tag.objects.filter(owner=me), но, конечно, это не работает.

Для справки, вот документация по django-taggit.


person Joe Mornin    schedule 04.07.2012    source источник


Ответы (1)


Я столкнулся с похожей проблемой, и вот мое решение:

tags = Tag.objects.filter(book__owner=me)
tags |= Tag.objects.filter(journalarticle__owner=me)
tags = tags.distinct()

надеюсь поможет~

person Flynn    schedule 03.08.2012