Django 在 Date 上建立 DateTimeField 索引

iba*_*uio 7 django django-models

是否可以仅索引 Django 中 models.DateTimeField 的日期方面?

我似乎无法在文档中找到它,并且我不确定这样做是否有效

class Meta:
    indexes = [
        models.Index(fields=['created_at__year', 'created_at__month', 'created_at__day']),
    ]
Run Code Online (Sandbox Code Playgroud)

JkS*_*Szm 5

实际上现在你可以这样做:

from django.db.models.functions import TruncDate

#Model
...
class Meta:
    indexes = [models.Index(TruncDate("created_at"), "created_at", name="created_at_date_idx")]
Run Code Online (Sandbox Code Playgroud)


sch*_*ngt 4

这个答案展示了如何在 Postgres 中做到这一点。然而,Django 的索引不支持开箱即用。您需要通过 自行管理migrations.RunSQL

migrations.RunSQL(
    "CREATE INDEX foo_created_at_date_idx ON event ((created_at::DATE));",
    "DROP INDEX IF EXISTS foo_created_at_date_idx;",
)
Run Code Online (Sandbox Code Playgroud)