簡體   English   中英

在Django中按非字段過濾

[英]Filter by non field in Django

我想按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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM