From b606b67f741bb8b23a8c4da65242eab13974ae92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jeppe=20Vesterb=C3=A6k?= Date: Mon, 4 Jul 2016 10:38:38 +0200 Subject: [PATCH] Make join work with uuid primary key models --- src/watson/backends.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/watson/backends.py b/src/watson/backends.py index 3eb3f7f..df148aa 100644 --- a/src/watson/backends.py +++ b/src/watson/backends.py @@ -274,8 +274,11 @@ class PostgresSearchBackend(SearchBackend): pk = model._meta.pk if has_int_pk(model): ref_name = "object_id_int" + ref_name_typecast = "" else: ref_name = "object_id" + # Cast to text to make join work with uuid columns + ref_name_typecast = "::text" return queryset.extra( tables = ("watson_searchentry",), where = ( @@ -283,10 +286,11 @@ class PostgresSearchBackend(SearchBackend): "watson_searchentry.search_tsv @@ to_tsquery('{search_config}', %s)".format( search_config = self.search_config ), - "watson_searchentry.{ref_name} = {table_name}.{pk_name}".format( + "watson_searchentry.{ref_name} = {table_name}.{pk_name}{ref_name_typecast}".format( ref_name = ref_name, table_name = connection.ops.quote_name(model._meta.db_table), pk_name = connection.ops.quote_name(pk.db_column or pk.attname), + ref_name_typecast = ref_name_typecast ), "watson_searchentry.content_type_id = %s" ),