如何在admin list_filter中引用相关模型的字段?

时间:2009-02-20 23:22:31

标签: django django-admin

我的模特:

OrderInfo与Print是一对一的,这是一个多对一的绘画,它本身就是一个多对一的俱乐部。

class OrderInfo(models.Model):
    print_ordered = models.OneToOneField(Print, blank=True)

class Print(models.Model):
    painting = models.ForeignKey(Painting)

class Painting(models.Model):
    club = models.ForeignKey(Club)

在我的OrderInfoAdmin中,我希望能够按相关俱乐部排序,但我无法弄清楚这样做的语法。

我试过这个,但它不起作用:

class OrderInfoAdmin(admin.ModelAdmin):
    list_filter = ['print_ordered__painting__club']

任何帮助表示感谢,提前谢谢!

2 个答案:

答案 0 :(得分:2)

list_filter命令用于过滤而不是排序。您需要ordering命令,该命令在此处记录:http://docs.djangoproject.com/en/dev/ref/models/options/#ordering。虽然从文档中可以看出modeling Meta命令是否允许通过外键进行排序,但我不清楚。 (filter()查询集函数肯定会:http://docs.djangoproject.com/en/dev/ref/models/querysets/#order-by-fields

我发现管理员在深层次模型中有一些限制。例如,您可以在其父页面上内联子模型,但不能内联孙子。此外,默认情况下,list_filter命令仅适用于建模表中的字段。在您的示例中,您无法过滤Print管理员中OrderInfo的字段。

答案 1 :(得分:0)

就在今天,Josh VanderLinden在他的博客上发布了一个解决方案:

Model Relationships and "list_display"

(通过Django Community找到)