Ich habe Blogposts und ich versuche, Kommentare zum Suchindex hinzuzufügen, aber es funktioniert nicht aus irgendeinem Grund ... Meine Kommentare hat generische Fremdschlüssel, wenn es Angelegenheiten. BTW, es funktioniert für die Tags.Heuhaufen - Kann kein Objekt mit vorbereiteten Feldern finden
class BlogIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
headline = indexes.CharField(model_attr="headline", null=True)
body = indexes.CharField(model_attr="body")
date = indexes.DateTimeField(model_attr='date')
mytags = indexes.MultiValueField()
mycomments = indexes.MultiValueField()
def prepare_mytags(self, obj):
return [tag.name for tag in obj.tags.all()]
def prepare_mycomments(self, obj):
cur_model = ContentType.objects.get_for_model(obj)
cur_comments = Comment.objects.filter(content_type=cur_model, object_pk=obj.id)
return [str(cur_c.content) for cur_c in cur_comments]
def get_model(self):
return Snip
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.filter(date__lte=timezone.now())
das ist meine Vorlage:
{{ object.headline }}
{{ object.body }}
{% for c in object.mycomments %}{{ c }} {% endfor %}
{% for tag in object.tags.all %}{{ tag.name }} {% endfor %}
Ich bin auch DRF-Heuhaufen, wenn es darauf ankommt, und dies ist der Serializer mit:
class BlogSearchSerializer(HaystackSerializer):
class Meta:
index_classes = [BlogIndex]
fields = [
"headline", "body", "date", "mytags", 'mycomments', "content",
]
Wenn ich bin auf der Suche mit content = XX es findet nichts in den Kommentaren.
Was mache ich falsch?
Dank R
Das Problem ist der fremde Schlüssel des Kommentars ist generischer Fremdschlüssel und deshalb kann ich comment_set AFAK nicht verwenden. Vielen Dank! – Rani
Ich habe es irgendwie behoben, aber nicht ganz. Ich habe 'comments = GenericRelation (Comment)' zu meinem Blog-Modell hinzugefügt, und jetzt kann ich es indizieren und es mit /? Content = XX suchen, aber ich kann nicht nur in den Kommentaren suchen, und ich kann die Kommentare nicht im Ergebnis anzeigen mit drf-Heuhaufen. – Rani
Sie können Ihrem 'Blog'-Modell eine Methode hinzufügen, z. B.' get_comments', die die aktuelle Logik in 'BlogIndex.prepare_mycomments' ausführt und eine Reihe von Kommentaren zurückgibt. Dann können Sie in der Vorlage mit 'object.get_comments' darauf zugreifen. – solarissmoke