From dd4fc22d4cfd182c04e0468ae4a8f630fbb2fd1b Mon Sep 17 00:00:00 2001 From: Carlton Gibson Date: Thu, 16 Jul 2026 16:23:46 +0200 Subject: [PATCH] Fixed #37219 -- Added GeneratedField example to PostgreSQL search reference. --- docs/ref/contrib/postgres/search.txt | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/ref/contrib/postgres/search.txt b/docs/ref/contrib/postgres/search.txt index 8d693f3bf019..720cfc0f3383 100644 --- a/docs/ref/contrib/postgres/search.txt +++ b/docs/ref/contrib/postgres/search.txt @@ -362,6 +362,31 @@ if it were an annotated ``SearchVector``: .. _PostgreSQL documentation: https://www.postgresql.org/docs/current/textsearch-features.html#TEXTSEARCH-UPDATE-TRIGGERS +Using ``GeneratedField`` +------------------------ + +An alternative method is to use a :class:`~django.db.models.GeneratedField`, +which has PostgreSQL maintain the column rather than a trigger:: + + from django.contrib.postgres.indexes import GinIndex + from django.contrib.postgres.search import SearchVector, SearchVectorField + from django.db import models + + + class Entry(models.Model): + headline = models.CharField(max_length=255) + body_text = models.TextField() + + search_vector = models.GeneratedField( + expression=SearchVector("headline", weight="A", config="english") + + SearchVector("body_text", weight="B", config="english"), + output_field=SearchVectorField(), + db_persist=True, + ) + + class Meta: + indexes = [GinIndex(fields=["search_vector"])] + Trigram similarity ==================