我有一个django应用程序,它有两个这样的模型:
class MyModel(models.Model):
name = models.CharField()
country = models.ForeignKey('Country')
class Country(models.Model):
code2 = models.CharField(max_length=2, primary_key=True)
name = models.CharField()
Run Code Online (Sandbox Code Playgroud)
管理类MyModel看起来像这样:
class MyModelAdmin(admin.ModelAdmin):
list_display = ('name', 'country',)
list_filter = ('country',)
admin.site.register(models.MyModel, MyModelAdmin)
Run Code Online (Sandbox Code Playgroud)
该Country表包含约250个国家.某些MyModel实例实际上只引用了少数几个国家.
问题是django admin 中的列表过滤器列出了过滤器面板中的所有国家/地区.列出所有国家(而不仅仅是那些被实例引用的国家)在这种情况下几乎无法实现列表过滤器的目的.
是否有一些只显示MyModel列表过滤器中作为选项引用的国家/地区?(我使用Django 1.3.)
以下是模型示例:
class Books(models.Model):
...
class Chapter(models.Model):
...
book = models.ForeignKey('Books')
class Exercise(models.Model):
...
book = models.ForeignKey('Books')
chapter = models.ForeignKey('Chapter')
Run Code Online (Sandbox Code Playgroud)
这是用于练习的 Admin 类:
class ExerciseAdmin(admin.ModelAdmin):
...
list_filter = (('book',admin.RelatedOnlyFieldListFilter),('chapter',admin.RelatedOnlyFieldListFilter))
admin.site.register(Exercise, ExerciseAdmin)
Run Code Online (Sandbox Code Playgroud)
我现在有了过滤器book和chapterfor exercise. 当我点击book过滤器中的a时book,它会相应地显示所有exercises选定的内容book。但是在过滤器列表中chapter,它仍然显示所有的chapters所有books。
有没有办法只能显示,在过滤器chapter的chapters的book,我在第一过滤器中选择book?如何?