Django管理外键相关

时间:2013-08-30 14:42:17

标签: python django

我有这样的模特。

class Country(models.Model)
    name = models.CharField(200)

class Zone(models.Model)
    country = models.ForeignKey(Country)
    name = models.CharField(200)

class Town(models.Model)
    zone = models.ForeignKey(Zone)
    name = models.CharField(200)

class Resource(models.Model)
    country = models.ForeignKey(Country)
    zone = models.ForeignKey(Zone)
    town = models.ForeignKey(Town)
    name = models.CharField(max_length=200)
    ...

我想在django admin中编辑资源模型。 由于我有300万镇记录,当我尝试编辑资源时,网站因城镇而停止。 我只想选择与区域相关的城镇。 如果在资源管理页面中更改了区域,则也会显示相关城镇。

有任何想法实现这个吗?

当我使用此功能显示管理表单时,我可以这样做 https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_foreignkey

但我只想根据区域动态加载城镇。

2 个答案:

答案 0 :(得分:0)

您正在寻找的是django-smart-selects的链式选择功能。

当选择框A中的值发生变化时,它将填充选择框B.

答案 1 :(得分:0)

您想要的解决方案的另一个选择是使用ModelAdmin类中的内置raw_id_fields属性。

raw_id_fields选项中指定的外键将显示当前选定的值(您所在的城镇)以及一个打开功能齐全的城镇列表的链接,其中包含排序,过滤和搜索表单。来自Django docs的示例截图:

有关详情,请参阅文档:https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields