2

我有这样的模型。

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

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

4

2 回答 2

0

您正在寻找的是django-smart-selects.

当一个值更改时,它将填充选择框B。

于 2013-08-30T17:39:14.560 回答
0

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

选项中指定的外键raw_id_fields将显示当前选择的值(在您的情况下为城镇)和一个链接,该链接打开具有排序、过滤和搜索表单的功能齐全的城镇列表。来自 Django 文档的示例屏幕截图:

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

于 2013-08-30T17:48:15.560 回答