是否可以将自己的字符串添加到Django SearchVectorField



我知道如何使用RAW PostgreSQL命令进行此操作,但想知道是否有一种方法可以使用Django PostgreSQL搜索。

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.core.exceptions.fielderror:无法将关键字" Alive"解析到字段中。

我尝试使" Alive"成为@property方法,但是看起来它只需要一个DB字段才能进行搜索。

有没有办法在纯django orm中执行此操作,或者我应该去原始的SQL路线?

您可以使用value()表达式将字符串添加到搜索向量中的字符串,如下所示:

from django.db.models import Value
    ...
    vector = vector + SearchVector(Value('alive'))
    ...

SearchVector不应像这样使用。它应该只接受字段名称。

请在这里查看

最新更新