このあたりのドキュメントといくつかの質問を読んでいて、2つの異なるクラスでインデックス付けされたフィールドを持つクエリを返す方法を理解できませんでした。以下にコードを入れましょう:
ここにクラスがあります:
class T031003Index(RealTimeSearchIndex):
text = CharField(document=True, use_template=True)
C003INST = IntegerField(model_attr='C003INST')
C003CHCD = CharField(model_attr='C003CHCD')
C003MTR = CharField(model_attr='C003MTR')
C003RZSC = CharField(model_attr='C003RZSC')
def index_queryset(self):
return T031003.objects.all()
def prepare(self, obj):
self.prepared_data = super(T031003Index, self).prepare(obj)
self.prepared_data['text'] = obj.C003CHCD
return self.prepared_data
site.register(T031003, T031003Index)
そして2番目のもの:
class T031002Index(RealTimeSearchIndex):
text = CharField(document=True, use_template=True)
C002USER = CharField(model_attr='C002USER')
def index_queryset(self):
return T031002.objects.all()
def prepare(self, obj):
self.prepared_data = super(T031002Index, self).prepare(obj)
self.prepared_data['text'] = obj.C002USER
return self.prepared_data
site.register(T031002, T031002Index)
そして、それぞれに2つのテンプレートインデックスがあります。
T031003_text:
{{ object.C003INST }}
{{ object.C003CHCD }}
{{ object.C003MTR }}
{{ object.C003RZSC }}
T031002_text:
{{ object.C002USER }}
{{ object.C002INST }}
私のテンプレートコード:
{% if page.object_list %}
{% for object in page.object_list %}
<br>
<li><font class="font">
{{ object.C003RZSC }}, {{ object.C003INST }}, {{ object.C003CHCD }}, {{ object.C003MTR }}, {{ object.C002USER }}
</li>
{% endfor %}
私の見解:
def search(req):
return SearchView(template='search.html')(req)
たとえば、クラスT031002Index(user = "vane"など)に属するフィールドの値を検索ボックスに入力すると、次の結果が得られます。
「なし、なし、なし、なし、羽根」
また、クラスT031003Indexのフィールドから値を入力すると、次の結果が得られます。
「鉛筆、1、教材、一般、なし」
私はmodels.pyのこれら2つのクラスの間に、C002INSTである外部キーフィールドを持っています。
説明してもらえますか?簡単そうに見えますが、自分ではわかりません。
前もって感謝します!