如何根据所选的“国家/地区”更新“城市”下拉列表?是否有任何基于Django的内容可以促进这一点?
class Country(models.Model):
name = models.CharField(max_length=50)
...
class City(models.Model):
name = models.CharField(max_length=50)
country = models.ForeignKey(Country)
class UserProfile(models.Model):
...
country = models.ForeignKey(Country, default=1)
city = models.ForeignKey(City, default=1)
user = models.OneToOneField(User)
在我看来,我有:
{{ profile_form.country }}
{{ profile_form.city }}
但所有城市都会立刻出现。
请告知。
答案 0 :(得分:2)
我的答案会有点长,所以我建议你看一下这个implementation,它可以准确回答你的需求。
答案 1 :(得分:2)
使用django-smart-selects。它包含更新表单字段的js功能,并帮助我节省了大量时间用javascript编写ajax调用。示例项目包括一个类似于上面提到的用例。它可能看起来像这样:
from smart_selects.db_fields import ChainedForeignKey
class City(models.Model):
name = models.CharField(max_length=50)
country = models.ForeignKey(Country)
class UserProfile(models.Model):
country = models.ForeignKey(Country)
city = ChainedForeignKey(City, chained_field="country", chained_model_field="country")
来自文档:
链式字段是字段应在同一模型上的字段 链式也是。链式模型字段是链式模型的字段 对应于链式字段链接的模型。
答案 2 :(得分:1)
这似乎是您可能希望在客户端的计算机上使用javascript进行的操作。您的网络服务器(运行Django的机器)不知道用户何时在下拉菜单上做出选择,直到他们点击提交。 (这会向您的Web服务器发出HTTP POST请求,并传递该表单的所有参数)。
在javascript中,您可以注册一个函数,以便在“国家/地区”下拉列表更改时,“城市”下拉列表会动态重新填充。
希望这有帮助!