首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SearchQuerySet结果中获取外键对象

在SearchQuerySet结果中获取外键对象
EN

Stack Overflow用户
提问于 2013-05-31 10:12:53
回答 1查看 3.2K关注 0票数 5

我有以下模型:

代码语言:javascript
复制
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")
    ....

和以下索引:

代码语言:javascript
复制
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 }}

但是,每当我执行此查询时:

代码语言:javascript
复制
    results = SearchQuerySet().models(EquipmentModel).filter(name__startswith=request.GET['q'])[:5]

我只得到制造商的pk。我想要整个对象(或者至少是它的名字)。这可能吗?!

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-31 18:16:23

要实现这一点,您必须在索引时已经add the manufacturer's name到索引:

代码语言:javascript
复制
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.name
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16848787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档