【发布时间】:2010-11-11 15:51:44
【问题描述】:
我有一对带有外键的 Django 模型,其中一个可以用 django-fts 搜索,比如:
class Foo(models.Model):
...
class Bar(fts.SearchableModel):
foo = models.ForeignKey(Foo)
当我有一个 Foo 实例时,我可以在视图中插入 print foo.bar_set.all() 并看到一组结果。但是,如果我尝试通过以下任何方式在视图中使用它:
{{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 %}
我能想到的 any 结构的行为就像 foo 实例没有 bar_set 属性一样。
编辑:我确定我在模板中有一个 Foo 实例,我测试了以下内容按预期工作:
{{foo|pprint}}
{{foo.id}} (and any other simple attributes of Foo)
我确信存在相关的 Bar 对象,因为我从视图 (print foo.bar_set.all()) 中检查了这一点。如果 QuerySet 为空,{{foo.bar_set.all|pprint}} 将产生 [],而不是 ''(它在 {{foo.bar_set.all|pprint}}、{{foo.bar_set|pprint}} 和任何 {{foo.nonexistent_attribute|pprint}} 上执行)。
当我使用 psycopg2 驱动程序将开发从 SQLite 数据库转移到 PostgreSQL 以使用 django-fts 全文搜索时,这种行为就开始了。
我找不到任何其他答案,因为谷歌搜索非常困难:“反向关系”或“反向外键”到处都是不相关的 django.core.urlresolvers.reverse 引用,我不知道如何命名“*_set”谷歌的事情。关于如何用谷歌搜索这个的提示也会有所帮助。
【问题讨论】:
标签: django sqlite postgresql django-templates psycopg2