模型管理器方法适用于开发服务器,但不适用于生产环境

时间:2018-06-26 15:47:16

标签: python django model production

我有这个模特经理:

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)

这在我的本地开发服务器上有效,但不适用于生产环境。我看到日志输入了我的视图,但是看不到在Manager的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)

此字段在数据库中具有文本。原因可能是-我已将完整的数据库上传到服务器,却以某种方式看不到该字段?
使用shell和Pycharm调试工具后-我看到serach_vector的内容是这样的:

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

\\是什么?可能是那些字符预混了一些单词,这是问题所在吗?当我在pgAdmin中检查该字段时-我只看到字母,没有其他标志。还是仅仅是Pycharm调试文本格式?

0 个答案:

没有答案