是否可以将自己的字符串添加到Django SearchVectorField中? [英] Is it possible to add your own strings to a Django SearchVectorField?

查看:97
本文介绍了是否可以将自己的字符串添加到Django SearchVectorField中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道如何使用原始PostgreSQL命令来执行此操作,但想知道是否可以通过Django PostgreSQL搜索来执行此操作。

I know how to do this with raw PostgreSQL commands, but want to know if there is a way to do this with Django PostgreSQL search.

class Person(models.Model):
    name = models.CharField(max_length=64)
    description = models.CharField(max_length=256)
    active = models.BooleanField(default=False)
    search_vector = SearchVectorField(blank=True)

def update_search(person):
    vector = SearchVector('name') + SearchVector('description')
    if person.active:
        vector = vector + SearchVector('alive')
    person.search_vector = vector




django.core.exceptions.FieldError:无法将关键字 alive解析为字段。

django.core.exceptions.FieldError: Cannot resolve keyword 'alive' into field.

我尝试将'alive'设为@property方法,但看起来它只希望使用db字段进行搜索。

I tried making 'alive' a @property method, but it looks like it only wants a db field for search.

有没有办法在纯Django ORM中做到这一点,还是应该走原始的SQL路由?

Is there a way to do this in pure Django ORM or should I go the raw SQL route?

推荐答案

您可以使用值()表达式,以便在 SearchVector 如下例所示:

You can use Value() expressions to add a string to in your SearchVector as in below example:

from django.db.models import Value

    ...
    vector = vector + SearchVector(Value('alive'))
    ...

这篇关于是否可以将自己的字符串添加到Django SearchVectorField中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆