Django管理页面中外键字段的list_filter

0 投票
2 回答
2453 浏览
提问于 2025-04-17 12:50

在Django管理页面中使用外部字段进行列表过滤

假设我有一些模型

   class Company():
         name varchar(50)
         field1 varchar(50)

   class Client()
          name varchar(50)
          company ForeignKey(Company)

现在我想在Django管理页面中对Client模型的field1进行过滤,应该怎么做呢?

我试过 list_filter = ['company_field1', 'company_name'],但是没有成功。有没有解决办法?

我使用的是Django 1.2版本。

提前谢谢大家!

2 个回答

4

在Django 1.2中,我用过一种比较“黑科技”的方法来解决这类问题。

首先,在你的数据库里,创建一个视图,这个视图是两个表通过外键关系连接起来的。然后让Django使用这个视图,而不是直接使用真实的表。接着,在这个视图上设置触发器,这样当有数据写入时,就能把数据正确地导入到相应的表里。

5

在Django 1.2中,这个功能是无法实现的。

从1.3版本开始,你可以使用标准的 `relatedModel__field` 语法(具体可以查看官方文档)。注意,要让这个语法生效,你需要使用两个下划线。

在当前的开发版本中,你甚至可以通过使用SimpleListFilter的子类来做更复杂的事情,这样几乎可以实现你想要的任何功能;)

撰写回答