django - 如何在管理列表过滤器中引用相关模型的字段?

标签 django django-admin

我的模型:

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/

相关文章:

django - 如何在重写 save_model 方法时防止出现 "Changed successfully"消息

python - Django Admin 报错admin.E008 The value of fieldsets must be a list or tuple

javascript - Django ModelMultipleChoiceField 小部件未渲染

python - 如何使用 VS Code 调试 Django 自定义管理命令

python - 通过 django-admin 添加带有波兰标志的记录时出现操作错误

Django - 扩展 LogEntry

python - Django [Errno 13] 权限被拒绝 : '/var/www/media/animals/user_uploads'

python - PyInstaller Django编译<卡住importlib._bootstrap>

python - 在 django 中为 django-admin 有一个单独的数据库

python - Django admin 在同一行显示多个字段