I Vorlagen sind mit dem Dokument zu erstellen, die indiziert werden, meine Vorlage aussieht, sagen:Django Heuhaufen: Hinzufügen von Daten aus prepared_field_name zur Indexing Vorlage
{{object.generic_data}}
Nun, ich meine generic_data erstellt werden sollen durch eine prepare_generic_data-Funktion. Dies scheint nicht zu funktionieren, da die Daten der Vorlage zugeführt werden, bevor die Vorbereitungsfunktion es zurückgeben kann.
Also wollte ich wissen, ob es eine Möglichkeit für mich gibt, die Vorlage neben der Prepare-Funktion oder eine andere Möglichkeit, um dieses Problem zu umgehen.
Bitte lassen Sie mich auch wissen, wenn die Frage nicht klar genug ist. Edit:
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"
Modell:
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)
Können Sie erklären, was Sie‘ re versuchen zu erreichen? Wenn Sie eine Vorlage haben, mit der Sie beliebigen Inhalt generieren können, warum benötigen Sie auch eine Vorbereitungsfunktion? – solarissmoke
@solarissmoke im prepare_generic_data Ich erhalte Daten von einem anderen Modell (mit model.objects.get (pk = content_key)) und content_key ist definiert als content_key = indexes.IntegerField (model_attr = 'content_key'), –
Kannst du all deine Posts posten? Code als Bearbeitung der Frage? Veröffentlichen Sie auch die Modell- und Indexklasse. – solarissmoke