にprepared_field_nameからデータを追加します。 prepare_generic_data関数によって生成されます。準備機能がそれを返す前に、データがテンプレートに供給されているので、これは機能していないようです。ジャンゴ干し草は:</p> <pre><code>{{object.generic_data}} </code></pre> <p>今、私は私のgeneric_dataが発生することにしたい:私のテンプレートが言う、のように見える、私はインデックス化された文書を作成するためのテンプレートを使用していますインデックステンプレート
私は、この問題を回避するために準備関数や別の方法でテンプレートを使用する方法があるかどうかを知りたかったのです。
また、質問が十分明確でない場合は教えてください。 編集:
Search_index
import datetime
from haystack import indexes
from diskus.models import Recipe,Post
class PostIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.EdgeNgramField(document=True, use_template=True)
post_id=indexes.IntegerField(model_attr='user_entity_id_id')
content_key=indexes.IntegerField(model_attr='content_key')
content_type=indexes.IntegerField(model_attr='content_type')
generic_data=indexes.CharField()
slug=indexes.CharField(model_attr='slug')
def get_model(self):
return Post
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.all()
def prepare_generic_data(self,obj):
if obj.content_type==3:
recipe=Recipe.objects.get(pk=obj.content_key)
return recipe.name
else:
return "random_stuff"
モデル:
class Post(UserEntity):
user_entity_id = models.OneToOneField(UserEntity,
on_delete=models.CASCADE,
related_name='post',
primary_key=True,
db_column='id')
content_key = models.IntegerField()
content_type = models.IntegerField()
class Recipe(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
あなたは」何を明確にすることができ再達成しようとしている?任意のコンテンツを生成できるテンプレートがある場合、なぜprepare関数も必要ですか? – solarissmoke
prepare_generic_dataの@solarissmoke私は別のモデルからデータを取得しています(model.objects.get(pk = content_key)を使用しています)、content_keyはcontent_key = indexes.IntegerField(model_attr = 'content_key')として定義されています。 –
質問を編集するコードですか?また、モデルとインデックスクラスも投稿してください。 – solarissmoke