2013-06-05 50 views
1

是否有可能在Django Admin界面上進行反向關係搜索?反向關係搜索Django管理界面

我的Django應用程序的數據庫模式包括以下型號:

class Tag(models.Model): 
    title = models.CharField(max_length=50) 

class Publication(models.Model): 
    title = models.CharField(max_length=200) 
    tags = models.ManyToManyField(Tag, blank=True, related_name="publications") 

我增加了一個搜索領域做看在我的admin.py文件的標題標籤:

class TagAdmin(admin.ModelAdmin): 
    list_display = ('title',) 
    search_fields = ('title',) 

因此,當我在django管理界面的搜索字段中輸入標籤標題時,會出現匹配標籤標題列表。現在我想這樣做,如果我在搜索字段中輸入標籤標題,就會出現匹配的出版物。

換句話說,我想象類似:

class TagAdmin(admin.ModelAdmin): 
    list_display = ('title',) 
    search_fields = ('publications',) 

這當然不行......但是這是想法...

這甚至可能嗎?或者我甚至會以正確的方式去解決這個問題?如果是這樣,有人可以建議一種方法來做到這一點或資源?如果你善意地這樣做,請記住,我是一個非常初學者。謝謝。

回答

0

您不應該嘗試使用註冊到您的標記模型的管理員類來執行此操作。相反,建立一個管理類的發佈,並設置其search_fields:

class PublicationAdmin(admin.ModelAdmin): 
    list_display = ('title',) 
    search_fields = ('tags__title',) 
+0

謝謝,這是很有道理的。但是我還需要做些什麼來實現這個目標?只是進行上述編輯會在管理界面上產生以下錯誤:「/ admin/apricot_app/publication/ 上的FieldError無法將關鍵字'tags_title'解析爲字段。選項爲:tags,title」。換句話說,我如何讓「tags_title」變得可以識別? – jac300

+0

它看起來像您可能錯誤鍵入,並使用一個下劃線而不是雙 - 下劃線是擴展對查詢中相關對象的引用的常用語法。 –

+0

yikes!謝謝,這有效! – jac300