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')