我是Django的新手,正在尝试熟悉它。
我有两个链接在一起的下拉菜单。我想选择一个国家,然后从那里选择那个国家的城市。
我正在尝试从以下网站复制代码:
https://django-select2.readthedocs.io/en/latest/extra.html#chained-select2
在models.py中有以下模型
from django.db import models
# Create your models here.
class Country(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
class City(models.Model):
name = models.CharField(max_length=255)
country = models.ForeignKey('Country', related_name="cities", on_delete=models.CASCADE)
def __str__(self):
return self.name
我的views.py具有以下代码: 从django.shortcuts导入渲染 从Django导入表格中
from django_select2.forms import ModelSelect2Widget
from .models import Country, City
# Create your views here.
class AddressForm(forms.Form):
country = forms.ModelChoiceField(
queryset=Country.objects.all(),
label=u"Country",
widget=ModelSelect2Widget(
model=Country,
search_fields=['name__icontains'],
)
)
city = forms.ModelChoiceField(
queryset=City.objects.all(),
label=u"City",
widget=ModelSelect2Widget(
model=City,
search_fields=['name__icontains'],
dependent_fields={'country': 'country'},
max_results=500,
)
)
def start(request):
form = AddressForm()
return render(request, 'startpagina.html', {'form': form})
我的HTML具有以下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Chained</title>
{{ form.media.css }}
<script src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></script>
</head>
<body>
<table>
{{ form }}
</table>
<br>
{{ form.media.js }}
</body>
</html>
我使用以下值填充了国家和城市模型:
国家:姓名:Nederland
国家:名字:belgie
城市:姓名:阿姆斯特丹,国家:Nederland
城市:姓名:鹿特丹,国家:Nederland
城市:姓名:安特卫普,国家:贝尔吉
城市:姓名:布鲁塞尔,国家/地区:Belgie
当我运行django项目时,我确实获得了2下拉菜单,但不幸的是它们没有链接。这意味着,当我选择Nederland时,我没有得到阿姆斯特丹和鹿特丹,但是得到了所有城市。
有人可以告诉我我的代码中缺少什么才能获得2下拉菜单的链接吗?