让我们来看看这个例子:
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
提供精彩的过滤条件。
以下是问题:
当用户点击Author
过滤器中的book__author
时,主表中的结果会相应地进行过滤。好。但book
过滤器仍会列出所有可用的Books
,无论book_author
过滤器如何。有没有办法让book
过滤器依赖于book__author
过滤器,以便在选择Author
时,只有Books
与Author
相关联是否列在过滤器选项中?
答案 0 :(得分:3)
看起来您可以使用SimpleListFilter
来完成这项工作,因为您可以使用lookups
方法获取请求,告诉您选择了哪位作者,并且只提供他的书籍列表,更多信息请参阅文档:https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter