4

我的模型:

OrderInfo 和 Print 是一对一的,Print 是多对一的,而 Painting 本身是 Club 的多对一。

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']

任何帮助表示赞赏,在此先感谢!

4

2 回答 2

2

list_filter命令用于过滤而不是排序。您想要ordering此处记录的命令:http: //docs.djangoproject.com/en/dev/ref/models/options/#ordering。虽然从文档中我不清楚modelingMeta 命令是否允许通过外键进行排序。(filter()queryset 函数确实可以:http://docs.djangoproject.com/en/dev/ref/models/querysets/#order-by-fields

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

于 2009-02-24T12:40:08.747 回答
0

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

模型关系和“list_display”

(通过Django 社区找到)

于 2009-02-27T19:08:44.713 回答