2

MultiValueFieldインデックスを作成しようとしていますが、機能していません。これが私が持っているものです:

クラスPublic_PollIndex(SearchIndex):
    text = CharField(model_attr ='question'、document = True、use_template = True)
    date_created = DateTimeField(model_attr ='date_created')
    choices = MultiValueField()

    def get_model(self):
        Public_Pollを返します

    def prepare_choices(self、obj):
        #なんらかの愚かな理由で、u "choice"ではなく(u "choice"、)を取得します
        #だから私たちは開梱します...
        c = [obj.choice_set.values_list('choice')の(c、)のstr(c)]]
        リターンc

    def index_queryset(self):
        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()られていなかったりすると、他の2つはインデックスに登録されています。choices

4

1 に答える 1

3

どのようにチェックしSearchQuerySetますか?の代わりにPublic_PollIndex(Public_Poll.objects.get(id=1)).load_all_queryset()モデルを返しますQuerySetSearchQuerySet

試す

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 に答える