2

我试图让 aMultiValueField被索引,但它只是不工作。这是我所拥有的:

类 Public_PollIndex(SearchIndex):
    text = CharField(model_attr='question', document=True, use_template=True)
    date_created = DateTimeField(model_attr='date_created')
    选择 = MultiValueField()

    def get_model(self):
        返回 Public_Poll

    def prepare_choices(self, obj):
        # 出于某种愚蠢的原因,我们得到 (u"choice",) 而不仅仅是 u"choice"
        # 所以我们解压...
        c = [ str(c) for (c,) in obj.choice_set.values_list('choice') ]
        返回 c

    def index_queryset(self):
        return self.get_model().objects.filter(date_created__lte=datetime.datetime.now())

然后我在模板中有:

{{ object.question }}
{{ object.date_created }}
{{ object.choices }}

使用调试器单步执行会prepare_choices返回类似['foo', 'bar']

但是当我查看 solr 或者Public_PollIndex(Public_Poll.objects.get(id=1)).load_all_queryset()我没有看到choices索引的字段时,但其他两个是。

4

1 回答 1

3

你如何检查SearchQuerySetPublic_PollIndex(Public_Poll.objects.get(id=1)).load_all_queryset()返回模型QuerySet而不是SearchQuerySet

尝试

SearchQuerySet()[0].text
SearchQuerySet()[0].choices

此外,在模板中,在 forloop 中呈现选择

{% for choice in object.choices %}
{{ choice }}
{% endfor %}

此外,

return obj.choice_set.values_list('choice', flat=True)

# instead of
c = [ str(c) for (c,) in obj.choice_set.values_list('choice') ]
return c
于 2012-05-20T09:43:27.400 回答