PostgreSQL specific model indexes

    class BloomIndex(\expressions, length=None, columns=(), **options*)

    Creates a bloom index.

    To use this index access you need to activate the extension on PostgreSQL. You can install it using the BloomExtension migration operation.

    Provide an integer number of bits from 1 to 4096 to the length parameter to specify the length of each index entry. PostgreSQL’s default is 80.

    The columns argument takes a tuple or list of up to 32 values that are integer number of bits from 1 to 4095.

    BrinIndex

    class BrinIndex(\expressions, autosummarize=None, pages_per_range=None, **options*)

    Creates a BRIN index.

    Set the parameter to True to enable to be performed by autovacuum.

    The pages_per_range argument takes a positive integer.

    class BTreeIndex(\expressions, fillfactor=None, **options*)

    Creates a B-Tree index.

    Provide an integer value from 10 to 100 to the fillfactor parameter to tune how packed the index pages will be. PostgreSQL’s default is 90.

    GinIndex

    Creates a gin index.

    To use this index on data types not in the , you need to activate the btree_gin extension on PostgreSQL. You can install it using the migration operation.

    Set the fastupdate parameter to False to disable the GIN Fast Update Technique that’s enabled by default in PostgreSQL.

    Provide an integer number of kilobytes to the parameter to tune the maximum size of the GIN pending list which is used when fastupdate is enabled.

    class GistIndex(\expressions, buffering=None, fillfactor=None, **options*)

    Creates a GiST index. These indexes are automatically created on spatial fields with . They’re also useful on other types, such as HStoreField or the .

    To use this index on data types not in the built-in gist operator classes, you need to activate the on PostgreSQL. You can install it using the BtreeGistExtension migration operation.

    Set the buffering parameter to True or False to manually enable or disable of the index.

    Provide an integer value from 10 to 100 to the fillfactor parameter to tune how packed the index pages will be. PostgreSQL’s default is 90.

    class HashIndex(\expressions, fillfactor=None, **options*)

    Creates a hash index.

    Provide an integer value from 10 to 100 to the fillfactor parameter to tune how packed the index pages will be. PostgreSQL’s default is 90.

    Creates an .

    Provide an integer value from 10 to 100 to the fillfactor parameter to tune how packed the index pages will be. PostgreSQL’s default is 90.

    Changed in Django 4.1:

    Support for covering SP-GiST indexes on PostgreSQL 14+ was added.

    OpClass() expressions

    class OpClass(expression, name)

    An OpClass() expression represents the expression with a custom operator class that can be used to define functional indexes, functional unique constraints, or exclusion constraints. To use it, you need to add 'django.contrib.postgres' in your . Set the name parameter to the name of the operator class.

    For example:

    creates an index on Lower('username') using varchar_pattern_ops.

    creates a unique constraint on Upper('description') using text_pattern_ops.

    creates an exclusion constraint on circle using .

    Changed in Django 4.0:

    Support for functional unique constraints was added.

    Support for exclusion constraints was added.