2012-02-07 15 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