管理员list_filter值取决于其他筛选器



让我们看一下这个例子:

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',)
    ...

这提供了相关的过滤器 AuthorBook .

问题来了:

当用户单击筛选器中的Author book__author时,主表中的结果将相应地进行筛选。好。但是book过滤器仍然列出所有可用的Books,而不管book_author过滤器如何。有没有办法使book过滤器依赖于book__author过滤器,以便在选择Author时,过滤器选项中仅列出与Author相关的Books

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

最新更新