PostgreSQL specific database functions

All of these functions are available from the django.contrib.postgres.functions module.

RandomUUID

class RandomUUID

Returns a version 4 UUID.

On PostgreSQL < 13, the pgcrypto extension must be installed. You can use the CryptoExtension migration operation to install it.

Usage example:

  1. >>> from django.contrib.postgres.functions import RandomUUID
  2. >>> Article.objects.update(uuid=RandomUUID())

TransactionNow

class TransactionNow

Returns the date and time on the database server that the current transaction started. If you are not in a transaction it will return the date and time of the current statement. This is a complement to django.db.models.functions.Now, which returns the date and time of the current statement.

Note that only the outermost call to atomic() sets up a transaction and thus sets the time that TransactionNow() will return; nested calls create savepoints which do not affect the transaction time.

Usage example:

  1. >>> from django.contrib.postgres.functions import TransactionNow
  2. >>> Article.objects.filter(published__lte=TransactionNow())
  3. <QuerySet [<Article: How to Django>]>