在 admin 中按外键 id 搜索
Posted
技术标签:
【中文标题】在 admin 中按外键 id 搜索【英文标题】:Search by foreign key id in admin 【发布时间】:2012-02-28 18:01:49 【问题描述】:我正在尝试实现一些看似简单的目标,但在 Google 和此处都找不到任何答案。我有一个 Django 模型,非常简单:
class Shipment(models.Model):
id = models.AutoField(primary_key=True)
transaction = models.ForeignKey(Transaction)
我希望能够通过 transaction.id 在我的 Shipment Admin 页面中进行搜索。为了清楚起见, 我想要这个(这段代码显然不起作用):
class ShipmentAdmin(admin.ModelAdmin):
list_display = ('id', 'transaction')
search_fields = ['id', 'transaction.id']
这不起作用,因为 transaction.id 没有命名字段。任何想法? “搜索”是指能够在“发货管理”页面的搜索框中插入我的交易 ID,按“搜索”并自动检索相应的交易。
【问题讨论】:
【参考方案1】:与其他管理选项一样,您需要使用 __ for foreign keys 例如
search_fields = ['id', 'transaction__id']
【讨论】:
如果你要上两层外键,它似乎不起作用,即 'allocation__project__name' 在分配有一个 FK 到项目并且项目有一个名称的情况下不起作用。你怎么解决这个问题?我不断收到“search_fields = ('=id',)
之类的东西一起使用。否则默认情况下会执行like
查询,因此对6
的查询也可以返回1556
的结果。通常不是这个意图。【参考方案2】:
search_fields documentation:
您还可以使用查找 API“跟随”表示法对 ForeignKey 或 ManyToManyField 执行相关查找
解决方案:
search_fields = ['id', 'transaction__id']
【讨论】:
以上是关于在 admin 中按外键 id 搜索的主要内容,如果未能解决你的问题,请参考以下文章