Django:Admin,为多选字段添加一些新过滤器

时间:2009-10-17 19:18:51

标签: django django-admin models

我正在使用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

我想要的是使用这个可用于选择文章将其绑定到当前文章的用户的框。那么,例如,有没有办法在那里添加一些过滤?例如。如果我想按部分过滤所有文章?然后解除以前的结果并按名称等过滤整个集合?

提前致谢

+++

我正在尝试调查向管理员添加水平过滤器的可能性。但是在我这样添加之后:

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']

所有文章都从admin中消失:(

1 个答案:

答案 0 :(得分:0)

如果您要查找基本过滤,请尝试thisthat

如果您想自定义过滤,您实际上可以这样做。一个小指南:

子类forms.SelectMultiple或直接来自FilteredSelectMultiple的现有django.contrib.admin.widgets,并使其按照您的意愿行事。

然后在您的admin.py中继承ModelAdmin并覆盖formfield_for_manytomany(在django.contrib.admin.options中查找该方法)并将现有小部件与新的小部件交换。