python - 在 Django 中按非字段过滤

标签 python django filter

我想在 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/

相关文章:

c# - 在 Visual Studio 上并行执行 Python 脚本和 C# 脚本

python - 如何从 OpenERP 中删除日期异常?

django - 在 django 中上传自定义模板

django - 我正在 django 中扩展用户模型,但由于原始密码而无法进行身份验证

python - 从Python中包含某些特定数字的列表中删除数字

java - 在 java 中实现像 photoshop 那样的液化滤镜的最基本方法是什么?

python - 如何在 python 中获得单调持续时间?

Python3 从 json 响应中删除换行符

python - 如何在 Django 模型中存储列表

Python 过滤器 defaultdict