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'])]
Спасибо