2

让我们看一下这个例子:

class Author(models.Model):
    ...    

class Book(models.Model):
    author = models.ForeignKey(Author, related_name='books'...)
    ...

class Chapter(models.Model):
    book = models.ForeignKey(Book, related_name='chapters' ...)
    ...

对于管理员,让我们ChapterAdmin像这样配置:

class ChapterAdmin(admin.ModelAdmin):
    list_filter = ('book__author', 'book',)
    ...

这通过相关Author和提供了很好的过滤器Book

问题来了:

当用户点击一个Authorinbook__author过滤器时,主表中的结果会被相应地过滤。好的。但是book过滤器仍然列出所有可用Books的,不管book_author过滤器。Is there a way to make the bookfilter dependent of book__authorfilter such that when an Authoris selected, only Booksby that are related to the Authorare listed in filter options?

4

1 回答 1

3

看起来您可以SimpleListFilter用来完成这项工作,因为您在方法中有请求,lookups您可以判断选择了哪个作者并仅提供他的书籍列表,文档中的更多信息:https ://docs.djangoproject.com/ zh/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter

于 2012-05-06T17:02:11.767 回答