You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用django-ordered-model,如何让move_up_down_links显示在ListAdmin页面?

问题修复方案

你的问题出在ListItem模型未配置基于父List的独立排序规则,导致Inline中的move_up_down_links无法生成有效链接。以下是具体修复步骤:

1. 修改models.py中的ListItem模型

在ListItem的Meta类中添加order_with_respect_to = 'list',同时移除原有的ordering = ["order"](因为order_with_respect_to会自动维护每个List下的排序顺序):

class ListItem(OrderedModel):
    """
    Represents an item of the user-created book list.
    """

    list = models.ForeignKey(
        verbose_name=_("список"),
        to=List,
        on_delete=models.CASCADE,
        related_name="items",
    )
    # ... 其余字段保持不变 ...

    class Meta:
        order_with_respect_to = 'list'  # 关键:指定每个List下的ListItem独立排序
        verbose_name = _("элемент списка")
        verbose_name_plural = _("элементы списков")

2. 验证Admin配置(无需修改)

你的admin.py配置已经满足要求:

  • ListItemInline继承了OrderedTabularInline,并正确包含move_up_down_links字段
  • ListAdmin继承了OrderedInlineModelAdminMixin,这是Inline排序功能的必要条件

为什么这样修复?

django-ordered-model中,当子模型(ListItem)需要在父模型(List)的Inline中独立排序时,必须通过order_with_respect_to指定父关联字段。没有这个配置时,排序是全局的,Inline上下文无法生成针对当前List的移动链接,导致"Move"列显示为空。

修改后,两个Admin页面的move_up_down_links都会正常显示,且每个List下的ListItem排序独立于其他List。

内容的提问来源于stack exchange,提问作者Hazadus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 06:35:05