J'ai ajouté un champ MultivaluedField à mon index (haystack), je dois rechercher un champ lié à ManyToMany, mais cela ne fonctionne pas.Django haystack à plusieurs valeurs ne fonctionne pas
Le moteur est WHOOSH.
Cette mon index ressemble:
class PostIndex(SearchIndex):
text = CharField(document=True, use_template=True)
author = CharField(model_attr='author')
body = CharField(model_attr='body')
pub_date = DateTimeField(model_attr='publish')
regions = MultiValueField()
def prepare_regions(self, obj):
return [region.name for region in obj.regions.all()]
Et ce que mon modèle ressemble à:.
class Post(models.Model):
title = models.CharField(_('title'), max_length=200)
author = models.ForeignKey(User, blank=True, null=True)
body = models.TextField(_('body'),)
allow_comments = models.BooleanField(_('allow comments'), default=True)
publish = models.DateTimeField(_('publish'), default=datetime.datetime.now)
categories = models.ManyToManyField(Category, blank=True)
tags = TagField()
objects = PublicManager()
regions = models.ManyToManyField(Region, blank=True)
Si je SearchQuerySet() filtre (region__in = words_list) cela fonctionne. Le problème est que je ne sais pas quand l'utilisateur cherche une région ou un autre champ, donc je dois utiliser SearchQuerySet(). Filter (content__icontains = liste_liens). Et de cette façon, rien n'est trouvé.
Merci
Merci!
Avez-vous ajouté champ régions à votre modèle d'index? – soField
Essayez d'utiliser [Solr] (http://lucene.apache.org/solr/). Beaucoup, beaucoup plus vite. –
Qu'en est-il juste d'ajouter '{{object.regions.all | join: ""}} 'dans le modèle du champ' text'? – maciek