Django, taggit: Когда я пытаюсь отфильтровать объекты, связанные с тегами taggit, запрос выполняется очень медленно

У меня около 300 000 запросов, и когда я перебираю объекты, которые связаны между собой, напр. запрос становится очень медленным (около 2-3 секунд).

Как я могу ускорить выполнение запроса? Также, в этом случае, следует ли мне внедрить теги в m2m поле вместо использования dkango-taggit?

# models.py

from taggit.managers import TaggableManager
from taggit.models import GenericUUIDTaggedItemBase, TagBase

class MyCustomTag(TagBase):
    slug = None
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name = _("Tag")
        verbose_name_plural = _("Tags")


class TaggedWhatever(GenericUUIDTaggedItemBase):
    tag = models.ForeignKey(
        MyCustomTag,
        on_delete=models.CASCADE,
        related_name="%(app_label)s_%(class)s_items",
    )


class Video(models.Model):
    tags = TaggableManager(through=TaggedWhatever, blank=True)

    def __str__(self):
        return self.title
# views.py

MyCustomTag.objects.annotate(count=Count("video")).order_by("-count")

Кроме того, попытка получить объект, содержащий такой тег, приведет к очень медленному запросу. Будет выдан очень медленный запрос.

Video.objects.filter(tags__name='tag_name')

Details of query publishing with django-silk

Вернуться на верх