#django
#django
Вопрос:
У меня есть модель, которая является прокси-моделью, основанной на модели комментариев Comment
Django:
from django_comments.models import Comment
class Annotation(Comment):
# ...
class Meta:
proxy = True
У Comment
модели есть TextField()
called comment
, и я хотел бы добавить к этому GinIndex, чтобы ускорить полнотекстовый поиск с использованием Postgresql.
Однако я не могу добавить индекс для этого поля в Annotation
классе Meta
, потому что я получаю эту ошибку:
примечания.Аннотация: (models.E016) ‘indexes’ ссылается на поле ‘comment’, которое не является локальным для ‘Annotation’ модели.
ПОДСКАЗКА: Эта проблема может быть вызвана наследованием нескольких таблиц.
И я не могу добавить индекс к самому определению поля, потому что это в django_comments
‘ Comment
модели.
Я предполагаю, что мог бы написать миграцию, чтобы вручную добавить индекс к django_comments.models.Comment
comment
полю с помощью SQL, но мне интересно, есть ли какой-нибудь менее запутанный способ, которого мне не хватает?
Ответ №1:
Прокси-модели предназначены только для изменения поведения моделей на Python, вы не можете изменить поведение на уровне базы данных (добавление полей, изменение индексов и т.д.).
Я бы не советовал писать миграцию для внешнего приложения в вашем проекте, что может привести к беспорядку из-за зависимостей / заказов миграции.
Я просмотрел документацию комментариев Django и думаю, что это позволяет вам настраивать модель.Вы можете добавить индекс или изменить все, что хотите, расширив абстрактную модель в своем пользовательском приложении для комментариев.
Комментарии:
1. Спасибо… Я опасаюсь этого делать, поскольку это существующее приложение с десятками тысяч комментариев. Хм. Мне нужно подумать о том, что лучше всего сделать.