2009-10-17 69 views
2

我正在用django構建一篇文章網站。 我已經添加了很多我的文章之間有很多關係是這樣的:Django:管理員,添加一些新的過濾器到多選字段

class Article (models.Model): 
    # Tiny url 
    url = models.CharField(max_length = 30, unique=True) 
    is_published = models.BooleanField() 
    author = models.CharField(max_length = 150) 
    title = models.CharField(max_length = 200) 
    short_description = models.TextField(max_length = 600) 
    body = tinymce_models.HTMLField() 
    related = models.ManyToManyField("self") 

現在在我的管理網站,我看到多選框(見的形象在這裏http://img.skitch.com/20091017-mfs2mbhbuudk2rgquium1bu61d.png

我想就是用的這個盒子可用於將選擇文章以將其綁定到當前文章的用戶。例如,有沒有辦法在那裏添加一些過濾?例如。如果我想按部分過濾所有文章?然後關閉以前的結果並按名稱過濾整個集合等?

在此先感謝

+++

我想探討的可能性增加濾波器水平爲admin。但經過我說這樣說:

class ArticleAdmin(admin.ModelAdmin): 
    exclude = ('video',) 

    js = ('/site_media/js/tiny_mce/tiny_mce.js', 
     ) 
    list_display = ('title', 'author', 'section', 'is_published', 'pub_date') 
    list_filter = ('author', 'section', 'is_published', 'pub_date') 
    filter_horizontal = ['related', ] 
    search_fields = ['body', 'title', 'short_description', 'seo_keywords'] 

所有文章從管理:(

+0

我不認爲這是可能的管理員,但我很想被證明是錯的! – 2009-10-17 22:21:27

回答

0

如果你看看基本的過濾,儘量消失thisthat

如果要自定義過濾,你小指南:

小類forms.SelectMultiple或直接存在FilteredSelectMultipledjango.contrib.admin.widgets,並使其做你想做的事

然後在您的admin.py中繼承ModelAdmin並覆蓋formfield_for_manytomany(在該方法中查看django.contrib.admin.options)並將現有的小部件與您的新小部件交換。

+0

我正在尋找一些基本的過濾。 你能解釋一下如何添加水平過濾器的例子嗎? 我試圖把它添加到admin: 類ArticleAdmin(admin.ModelAdmin): 排除=( '視頻',) JS =( '/site_media/js/tiny_mce/tiny_mce.js', ) list_display =('title','author','section','is_published','pub_date') list_filter =('author','section','is_published','pub_date') filter_horizo​​ntal =('section', 'is_published') 但是我的所有文章條目都消失了......在哪裏添加過濾器? – 2009-10-18 12:01:03

+0

更新後的主帖 – 2009-10-18 12:15:53

+0

AFAIK filter_horizo​​ntal僅適用於ManyToMany字段。參數只是您要過濾的字段,而不是您要過濾的字段。所以在你的情況下,它只是filter_horizo​​ntal =('related',)。正如我所指出的那樣,這只是基本的過濾,對於更高級的過濾,您必須親自編寫代碼。 – stefanw 2009-10-18 12:28:17

相關問題