J'essaye d'obtenir django-haystack (en utilisant un backend xapian) pour indexer mon modèle ici pour la recherche, par les champs name
et . J'ai une sous-classe Item
, Device
, qui ajoute un champ manufacturer
.Dans django-haystack, comment puis-je utiliser des sous-classes de modèles?
Le modèle Item
est défini ainsi:
class Item(models.Model):
name = models.CharField(max_length=255, unique=True)
description = models.TextField(null=True, blank=True)
compatible_with = models.ManyToManyField('self', null=True, blank=True)
often_with = models.ManyToManyField('self', null=True, blank=True)
created_by = models.ForeignKey(User, null=True, blank=True, related_name='created_by')
verified = models.BooleanField(default=False)
verified_by = models.ForeignKey(User, null=True, blank=True, related_name='verified_by')
date_created = models.DateField(auto_now_add=True)
slug = models.SlugField(max_length=300, null=True, blank=True)
Ma sous-classe de SearchIndex
de django-botte de foin ressemble à ceci:
class ItemIndex(SearchIndex):
text = CharField(document=True, use_template=True)
name = CharField(model_attr='name')
description = CharField(model_attr='description')
site.register(Item, ItemIndex)
J'ai mis en place ce modèle, dans templates/search/indexes/catalog/item_text.txt
:
{{ object.name }}
{{ object.description }}
Qu'est-ce que j'ajoute à item_text.txt
tel que le champ manufacturer
est indexé, si et seulement si l'objet de modèle est une instance de Device
?
Merci :) cela a fait l'affaire. –
heureux de l'entendre. – fish2000