Ich habe ein Paar von Django-Modelle mit einem Fremdschlüssel, von denen einer mit django-fts durchsuchbar ist, sagen:Reverse-Fremdschlüssel für django-fts durchsuchbare Modell in Vorlage
class Foo(models.Model):
...
class Bar(fts.SearchableModel):
foo = models.ForeignKey(Foo)
Wenn ich eine Instanz haben von Foo, in Sicht kann ich einfügen print foo.bar_set.all()
und ich sehe eine Reihe von Ergebnissen. Allerdings, wenn ich versuche, es in Hinblick auf die Verwendung in einem der folgenden Wege:
{{foo.bar_set|pprint}}
{{foo.bar_set.all|ppring}}
{{foo.bar_set.count}}
{{foo.bar_set.all|length}}
{% for bar in foo.bar_set.all %} {{bar}} {% endfor %}
und buchstäblich jede Konstrukt, das ich von benimmt sich denken kann, als ob foo
Instanz keine bar_set
Attribut hatte.
Edit: Ich bin sicher, dass ich eine Foo
Instanz in der Vorlage habe ich folgende getestet wie erwartet funktionieren:
{{foo|pprint}}
{{foo.id}} (and any other simple attributes of Foo)
Ich bin sicher, dass es im Zusammenhang Bar Objekte, wie ich, dass der Check von Ansicht (print foo.bar_set.all()
). Und wenn das QuerySet leer wäre, würde {{foo.bar_set.all|pprint}}
[]
ergeben, nicht ''
(was es auf {{foo.bar_set.all|pprint}}
, {{foo.bar_set|pprint}}
und alle {{foo.nonexistent_attribute|pprint}}
tut).
Dieses Verhalten begann, als ich die Entwicklung von SQLite-Datenbank zu PostgreSQL mit psycopg2-Treiber verschoben, um django-fts Volltextsuche zu verwenden.
Ich konnte keine andere Antwort finden, weil das googeln ist sehr schwierig: "umgekehrte Beziehung" oder "umgekehrter Fremdschlüssel" ist alles mit nicht verwandten django.core.urlresolvers.reverse
Referenzen, und ich habe keine Ahnung, wie man "* _set" Ding googeln. Ein Tipp, wie man diesen googelt, wäre auch hilfreich.
Ich habe eine Instanz von Foo ({{foo | pprint}} funktioniert, ich habe dies überprüft), und alle einfachen Attribute (wie {{foo.id}}) funktionieren. Es gibt eine Relation und es gibt verwandte Bar-Objekte, die ich durch Ausführen von print foo.bar_set.all() aus der Ansicht vor dem Rendern der Vorlage testen kann. –
Hmm, seltsam. Können Sie Ihren Ansichtscode posten? –
Ich fand dies, das war Interaktion mit django-fts (ich weiß, dass ich das in der ersten Version des Fragetextes nicht erwähnt habe, ich habe das nicht vermutet, um die Ursache zu sein). Siehe meine Antwort für erweiterte Erklärung. –