自定义Django管理页面以实现依赖选择字段

13 投票
2 回答
11087 浏览
提问于 2025-04-17 07:41

我刚开始学习Django,现在正在为我的网站开发一个管理面板。我需要有依赖关系的选择框,也就是说,用户在选择了国家后,才能选择城市。我希望在选择国家后,城市的选项能够在城市选择框中加载出来,但我不知道怎么去定制Django的管理界面。我之前用JavaScript、AJAX和PHP做过类似的事情,所以我知道怎么手动实现,但不太清楚在Django中怎么使用AJAX以及如何进行定制。

我在其他问题中看到有人建议阅读Django的文档,所以我尝试去看管理面板的文档,但没找到如何定制Django管理面板的方法。我需要为这些选择框定制整个页面吗?或者请告诉我怎么把一些jQuery代码加进去,这样我就可以通过JavaScript来实现了?

2 个回答

0

确实有很好的文档可以帮助你自定义Django的管理后台。比如这里,你可以看到如何重新定义管理模板。

不过在你提到的情况中,按照你的建议,比较简单的方法是添加一些JavaScript代码来给字段增加额外的功能。你可以在模型的管理后台中指定这个包含代码的js文件,具体的做法可以参考这里

16

你可能想要使用 django smart selects 中的分组选择功能。从说明文档中可以看到:

如果你有下面这个模型:

class Location(models.Model)
    continent = models.ForeignKey(Continent)
    country = models.ForeignKey(Country)

而且你希望所有国家按照洲来分组,并且在选择时使用这些分组,可以把它改成下面这样:

from smart_selects.db_fields import GroupedForeignKey

class Location(models.Model)
    continent = models.ForeignKey(Continent)
    country = GroupedForeignKey(Country, "continent")

撰写回答