Django:list_filter和外键字段

Dan*_*Dan 18 django list foreign-keys filter

Django不支持从list_display或list_filter获取外键值(例如foo__bar).我知道你可以创建一个模块方法作为list_display的解决方法,但是我如何为list_filter做同样的事情呢?谢谢.

小智 28

Django支持带有外键字段的list_filter

# models.py:
class Foo(models.Model):
    name = models.CharField(max_length=255)

    def __unicode__(self):
        return self.name

class Bar(models.Model):
    name = models.CharField(max_length=255)
    foo = models.ForeignKey(Foo)

# admin.py:
class BarAdmin(admin.ModelAdmin):
    list_filter = ('foo__name')
Run Code Online (Sandbox Code Playgroud)

从文档:list_filter中的字段名称也可以使用__查找来跨越关系


Hae*_*aes 12

好吧,文档说你可以使用ForeignKey字段类型list_filter:

http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter

一个例子:

# models.py:
class Foo(models.Model):
    name = models.CharField(max_length=255)

    def __unicode__(self):
        return self.name

class Bar(models.Model):
    name = models.CharField(max_length=255)
    foo = models.ForeignKey(Foo)

# admin.py:
class BarAdmin(admin.ModelAdmin):
    list_filter = ('foo')
Run Code Online (Sandbox Code Playgroud)

如果你想通过相关模型中的字段进行过滤,那么可以使用补丁来实现这项工作(可能会合并到1.2中):

http://code.djangoproject.com/ticket/3400

  • 此功能不再有效.外键字段不会在侧边栏上呈现 - 就像您没有指定它们一样. (8认同)