2017-08-24 2 views
1

Est-il possible de conserver un champ joint avec Djangos SearchVectorField pour la recherche en texte intégral?Est-il possible de conserver un champ joint dans Djangos SearchVectorField?

Par exemple:

class P(models.Model): 
    brand = models.ForeignKey(Brand, on_delete=models.CASCADE) 
    search_vector = SearchVectorField(null=True, blank=True) 

Code:

p = P.objects.get(id=1) 
p.search_vector = SearchVector('brand__name') 
p.save() 

soulève cette exception:

FieldError: Joined field references are not permitted in this query 

Si cela est impossible, comment pouvez-vous augmenter les performances des requêtes annotées jointes?

Répondre

1

J'ai trouvé une solution à votre problème:

p = P.objects.annotate(brand_name=SearchVector('brand__name')).get(id=1) 
p.search_vector = p.brand_name 
p.save()