我想在 django 应用程序的管理页面中按非字段列进行过滤。例如我可以有以下内容:
class Subject(models.Model)
name = models.CharField(max_length=100)
def __unicode__(self):
return self.name
class Student(models.Model)
name = models.CharField(max_length=100)
subject = models.ForeignKey(Subject)
def __unicode__(self):
return self.name
class School(models.Model)
school = models.CharField(max_length=100)
student = models.ForeignKey(Student)
def subject(self)
return self.student.subject.name
我会在 admin.py 中包含以下内容
class SchoolAdmin(admin.ModelAdmin):
list_display = ('school', 'student', 'subject')
list_filter = ('school', 'student', 'subject')
admin.site.register(School, SchoolAdmin)
但是这行不通,因为我无法过滤主题,因为它不引用字段?有谁知道最好的方法吗?通过四处搜索,SimpleListFilter 似乎可以解决问题,但我是 python 和 django 的新手,无法弄清楚如何为我的示例实现它。
提前致谢
最佳答案
试试这个:
class SchoolAdmin(admin.ModelAdmin):
list_display = ('school', 'student__name', 'student__subject__name')
list_filter = ('school', 'student__name', 'student__subject__name')
admin.site.register(School, SchoolAdmin)
关于python - 在 Django 中按非字段过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19591743/