Django admin中的分层外键选择器

时间:2016-07-26 07:43:36

标签: python django django-models django-admin

假设我有一些这样的模型:

class Country(models.Model):
    name = models.TextField()

class City(models.Model):
    country = models.ForeignKey(Country)
    name = models.TextField()

class Person(models.Model):
    city = models.ForeignKey(City)
    name = models.TextField()

在Django管理页面中,如果我添加/编辑Person实例,它会向我提供一个City个实例的下拉列表,可供选择,如下所示:

enter image description here

然而,世界上的城市数量非常大。所以,我想做的是有一个等级国家 - >城市选择器,像这样:

enter image description here

Django有可能吗?

2 个答案:

答案 0 :(得分:1)

这是可能的,但不是开箱即用。

在用户选择国家/地区以获取与该国家/地区相关的城市后,您必须提出并发出ajax请求。

你需要一个关于django的视图,它返回给定国家的城市格式,这种格式可以很容易地解析javascript或构建html并通过网络发送它,如果你不关心重用那个端点(也许你可以查看django的Comment

之后,你需要使用javascript(使用类似jquery之类的东西)来点击该视图,发送国家ID并获取相应的城市。

希望这有帮助。

答案 1 :(得分:0)

如果您创建自己的页面,默认情况下加载一个国家/地区及其状态,则可以执行此操作,然后如果您选择一个国家/地区执行ajax调用以重新填充城市,我将建议使用相同的角度js