В Django, как проиндексировать поле в исходной модели прокси-модели? - PullRequest
1 голос
/ 25 марта 2019

У меня есть модель, которая является прокси-моделью на основе Django Comments ' Comment модель:

from django_comments.models import Comment

class Annotation(Comment):

    # ...

    class Meta:
        proxy = True

Модель Comment имеет TextField() с именем comment, и я хотел бы добавить к этому GinIndex , чтобы ускорить полнотекстовый поиск с использованием Postgresql.

Однако я не могу добавить индекс к этому полю в классе Annotation Meta, потому что я получаю эту ошибку:

annotations.Annotation: (models.E016) 'indexes' относится к полю 'comment', которое не является локальным для модели 'Annotation'.
СОВЕТ: Эта проблема может быть вызвана наследованием нескольких таблиц.

И я не могу добавить индекс к самому определению поля, потому что он в django_comments 'Comment модели.

Я думаю Я мог бы написать миграцию, чтобы вручную добавить индекс в поле django_comments.models.Comment comment, используя SQL, но мне интересно, есть ли какой-то менее грязный способ, который я пропускаю?

1 Ответ

0 голосов
/ 25 марта 2019

Прокси-модели предназначены только для изменения поведения моделей на Python, вы не можете изменить поведение уровня базы данных (добавление полей, изменение индексов и т. Д.).

Я бы не советовал писать перенос для внешнего приложения в вашем проекте, который мог бы запутаться из-за зависимостей / порядков переноса.

Я заглянул в документацию Django Comments и думаю, что она позволяет настроить модель. Вы можете добавить индекс или изменить что угодно, расширив абстрактную модель в своем приложении для пользовательских комментариев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...