2012-02-07 40 views
10

我试图实现一些显然简单的事情,但我无法在Google或这里找到任何答案。我有一个Django模型,一些死简单:通过外键id在管理员中搜索

class Shipment(models.Model): 
    id = models.AutoField(primary_key=True) 
    transaction = models.ForeignKey(Transaction) 

我希望能够通过transaction.id在我的出货管理页面进行搜索。为了清楚起见, 我想这(此代码显然是行不通的):

class ShipmentAdmin(admin.ModelAdmin): 
    list_display = ('id', 'transaction') 
    search_fields = ['id', 'transaction.id'] 

这可不行事业transaction.id没有指定的字段。任何想法? “搜索”我的意思是能够将我的交易ID插入货运管理页面的搜索框中,按“搜索”并自动检索适当的交易。

回答

25

为与其他管理选项,您需要使用__ for foreign key s

search_fields = ['id', 'transaction__id'] 
+0

谢谢,它的工作:) – 2012-02-07 10:03:59

+0

似乎它不工作,如果你要了外键的两个级别,即“allocation__project__name”的地方不工作分配有一个FK项目和项目有一个名称。你如何解决这个问题?我不断收到“不是可调用的,的属性” – radtek 2015-03-19 22:51:42

+1

@radtek,这似乎为我工作,我可以做fk1__fk2__field,只在1.7 tho试过,是分配和项目只是ForeignKey()? – JamesO 2015-03-20 09:48:20

4

search_fields documentation

您也可以在一个ForeignKey或ManyToManyField与查询API进行相关查询 “跟随” 符号

解决方案:

search_fields = ['id', 'transaction__id'] 
+0

感谢您的文档链接:) – 2012-02-07 10:04:17