我的模型:
OrderInfo 与 Print 是一对一,与 Painting 是多对一,而 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']
感谢任何帮助,提前致谢!
最佳答案
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
命令仅适用于建模表中的字段。在您的示例中,您无法在 OrderInfo
管理中过滤 Print
字段。
关于django - 如何在管理列表过滤器中引用相关模型的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/571635/