我有以下模型:
class EquipmentModel(models.Model):
name = models.CharField(max_length=64, blank=False)
description = models.CharField(max_length=64, blank=True)
manufacturer = models.ForeignKey(Manufacturer, related_name="manufacturer")
....和以下索引:
class EquipmentModelIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
name = indexes.CharField(model_attr="name")
manufacturer = indexes.CharField()
def get_model(self):
return EquipmentModel
def index_queryset(self, using=None):
return self.get_model().objects.all()我的equipmentmodel_text.txt也是如此
{{ object.name }} {{ object.manufacturer }}
但是,每当我执行此查询时:
results = SearchQuerySet().models(EquipmentModel).filter(name__startswith=request.GET['q'])[:5]我只得到制造商的pk。我想要整个对象(或者至少是它的名字)。这可能吗?!
谢谢!
发布于 2013-05-31 18:16:23
要实现这一点,您必须在索引时已经add the manufacturer's name到索引:
class EquipmentModelIndex(indexes.SearchIndex, indexes.Indexable):
# your other fields
manufacturer_name = indexes.CharField()
def index_queryset(self, using=None):
# using select_related here should avoid an extra query for getting
# the manufacturer when indexing
return self.get_model().objects.all().select_related('manufacturer')
def prepare_manufacturer_name(self, obj):
return obj.manufacturer.namehttps://stackoverflow.com/questions/16848787
复制相似问题