Метод менеджера моделей работает на сервере разработки, но не на производстве - PullRequest
0 голосов
/ 26 июня 2018

У меня есть менеджер этой модели:

class ProductManager(models.Manager):
    def search(self, text):
        import logging
        logging.info(222222222222, text)
        vector = pg_search.SearchVector('brand__brand_name', weight='A') +\
                pg_search.SearchVector('title', weight='A')+\
                pg_search.SearchVector('description', weight='C')
        query = pg_search.SearchQuery(text)
        rank = pg_search.SearchRank(vector, query)
        logging.info(111111, text)
        return self.get_queryset().annotate(rank=rank).filter(search_vector=query).annotate(document=vector).order_by('-rank')

Используется в моей модели:

class Product(TimeStampedModel):
    '''some fields'''
    objects = ProductManager()

Далее в моем views.py У меня есть:

logging.info(search)
products_list = Product.objects.search(search).select_related('some fields')                                    
logging.info(products_list)

И это работает на моем локальном сервере разработки, но не на производстве. Я вижу, что логи вошли в мое представление, но не видят логи, введенные методом search моего менеджера. Почему это может случиться?

ОБНОВЛЕНИЕ 1:

import logging
logging.basicConfig(
    level = logging.INFO,
    format = '%(asctime)s %(levelname)s %(message)s',
    filename = os.path.join(BASE_DIR, 'djjj.log'),
    )

ОБНОВЛЕНИЕ 2:
Локализованная проблема - это в filter(search_vector=query) части и search_vector это:

import django.contrib.postgres.search as pg_search

search_vector = pg_search.SearchVectorField(null=True)

Это поле содержит текст в базе данных. Может ли это быть вызвано тем, что я загрузил полную базу данных на сервер, и она как-то не видит это поле?
После использования оболочки и инструмента отладки Pycharm - я вижу содержимое serach_vector следующим образом:

'\\'active\\':7C \\'astera\\':1A,6C \\'cool\\':9C \\'minerals\\':8C \\'mint\\':10C \\'зубная\\':2A \\'минералами\\':5A \\'паста\\':3A \\'с\\':4A'

Что это за \\? Может быть, эти символы предварительно смешаны, как к словам, и в этом проблема? Когда я проверяю это поле в pgAdmin - я вижу только буквы, никаких других знаков. Или это просто отладочное форматирование текста Pycharm?

...