Django 1.10 полнотекстовый поиск по UUIDField возвращает DataError
У меня есть следующая модель:
class Show(models.Model):
cid = models.UUIDField(
default=uuid.uuid4,
editable=False,
verbose_name="Content ID",
help_text="Unique Identifier"
)
title_short = models.CharField(
max_length=60,
blank=True,
verbose_name="Short Title",
help_text="Short title (60 chars)"
)
Я использую приведенный ниже фрагмент
from django.contrib.postgres.search import SearchVector
Entry.objects.annotate(
search=SearchVector('cid'),
).filter(search='wateva')
Возвращает:
DataError at /meta/shows/
invalid input syntax for uuid: ""
LINE 1: ...unt", to_tsvector(COALESCE("entities_show"."cid", '')) AS "s...
Я пытался с PostgreSQL 9.3.14 и PostgreSQL 9.5.3, Python 3.4.3
Кто-нибудь сталкивался с этой проблемой?
1 ответ
Вы можете подать отчет об ошибке.
Код Django создает инструкцию COALESCE(), предполагая, что окончательное запасное значение пустой строки (''
) приемлемо для указанных полей. Я не вижу способа указать запасное значение через официальный API, и поскольку поля UUID транслируются в поля UUID Postgres Native, пустая строка является недопустимым значением для этого поля.
Если вы решите подать отчет, пожалуйста, добавьте комментарий здесь с идентификатором заявки, я мог бы исправить его, так как у меня есть личная заинтересованность в этой функции.