2017-02-04 4 views
0

を干し草の山、私は私のテンプレートで見たいと思って何は、私は次のモデルを持っている

class NoteIndex(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.EdgeNgramField(document=True, use_template=True) 
    topic = indexes.CharField(model_attr='topic') 

は次のとおりです。

Search for: <topic> 

Results: 
<ul> 
<topic> <topic.user.username> <topic.user.referral_rcvd.filter(about=topic) 
</ul> 

シェルで作業するので、これで簡単です。

from haystack.query import SearchQuerySet as SQS 
from models import * 
s = SQS().models(Note).auto_query('topic_name') 
[i.object.user.referral_rcvd.filter(about=i.object.topic).count() for i in s.all()] 

しかし、これはHTMLテンプレートでは動作しません:

{% for result in object_list %} 
    {{ result.object.user.referral_rcvd.filter(about=i.object.topic).count() }} 
{% endfor %} 

それはシェルで動作する場合、どのように私はそれがテンプレートで作業するのですか?ありがとう!

答えて

0

最後に解決しました。

class NoteIndex(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.EdgeNgramField(document=True, use_template=True) 
    topic = indexes.CharField(model_attr='topic') 
    referral_count = indexes.IntegerField() 

    def prepare_referral_count(self, obj): 
     topic_name = Note.objects.get(pk=obj.pk).topic 
     return obj.user.referral_rcvd.filter(about=topic_name).count() 

は、その後、私は私のテンプレートで、次の python manage.py update_indexを実行し、配置::私がやったことは prepare_FOOメソッドを使用していた

{% for result in object_list %} 
    {{ result.referral }} 
{% endfor %} 

我々は、インデックスで何かを参照しているので、それはないresult.object.referralです。

関連する問題