2011-10-20 36 views
0

假設我有兩個型號:如何在django中通過具有關係的字段進行過濾的更改列表?

class Blog(models.Model): 
    pass 

class Article(models.Model): 
    blog = models.ForeignKey(Blog, related_name="articles") 

我要篩選只有一篇文章的博客。該過濾器將是這樣的:

Blog.objects.annotate(article_count=models.Count('articles')).filter(article_count__gt=0) 

我怎樣才能在這樣的管理過濾器的變化列表? 我嘗試了一些方法,如自定義filterspecs,但沒有成功。 最好的解決辦法是使用代理模式和註冊管理分開列表,這樣的解決方案:

Multiple ModelAdmins/views for same model in Django admin

但是,這並不與權限系統工作得很好。 任何想法?

+0

順便說一句,這是不是最有效的查詢:) – akonsu

回答

0

目前沒有辦法,除了一些非常痛苦的黑客,以實現這一目標。 Django 1.4將提供創建自定義filterspecs的功能(請參閱:https://code.djangoproject.com/ticket/5833),這將允許您執行此類操作。

因爲這似乎是一種邊緣情況(實際上,有多少博客在相當長的一段時間內會有零個帖子?)我的建議是暫時堅持下去,也許會考慮升級一次1.4發佈。

如果你堅持下去的兔子洞,你可以從這裏開始:Custom Filter in Django Admin on Django 1.3 or below

+0

感謝。我的情況實際上並不是關於博客,我以這個模型爲例,只是爲了簡化。我的模型是關於電影節中的電影。只有一些(約20%)將被展出。那些在相關的電影節目。所以我希望只過濾爲節日編排的電影。還是要謝謝你的幫助。我可能會等待django 1.4。 – bbrik

相關問題