我的模特:
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']
任何帮助表示感谢,提前谢谢!
答案 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找到)