我知道如何使用原始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



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

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

最佳答案

您可以使用Value() expressionsSearchVector中添加一个字符串,如下例所示:

from django.db.models import Value

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

关于django - 是否可以将自己的字符串添加到Django SearchVectorField中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42679743/

10-16 02:18