Django - построение многоколоночных индексов

Допустим, у нас есть модель, которая выглядит следующим образом:

class Entry(models.Model):
    """Users will query for entries with various combinations of filters"""
    date_created = models.DateTimeField(auto_now_add=True)
    important = models.BooleanField(default=False, null=False)
    urgent = models.BooleanField(default=False, null=False)
    user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)

Каким образом правильно создавать индексы, которые будут удовлетворять любой комбинации вышеуказанных полей в фильтрах? Например, .filter(date_created__year='2021', important=False, user=1)

Моей первой мыслью было следующее, но у меня есть подозрение, что я делаю что-то неправильно...

class Meta:
    indexes = [models.Index(fields=['-date_created']),
               models.Index(fields=['-date_created', 'important']),
               models.Index(fields=['-date_created', 'important', 'urgent']),
               models.Index(fields=['-date_created', 'important', 'urgent', 'user']),
               models.Index(fields=['-date_created', 'user']),
               models.Index(fields=['....etc...'])]

Я прочитал документацию Django и отметил использование аргумента include, который был введен в Django 3.2, но не смог найти полезных примеров его использования. Будет ли это работать в моей ситуации?

class Meta:
    indexes = [models.Index(fields=['-date_created'], include=['important', 'urgent', 'user'])]

Спасибо

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