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, пустая строка является недопустимым значением для этого поля.

Если вы решите подать отчет, пожалуйста, добавьте комментарий здесь с идентификатором заявки, я мог бы исправить его, так как у меня есть личная заинтересованность в этой функции.

Другие вопросы по тегам