我已经使用Jquery直接在HTML页面中制作它,但我认为由于大项目列表不是一个好的解决方案。我认为最好在db中存储一个巨大的列表,而不是在我的情况下自动编译该字段。
我想要自动编译(带机场名称)两个字段(出发地和目的地)。所以在models.py中我创建了两个类:
class Aero(models.Model):
departure = models.CharField(max_length=20)
destination = models.CharField(max_length=20)
class AirportName(models.Model):
air_name= models.CharField(max_length=70)
我用3000机场填充数据库(我使用AirportName类来做)。现在我希望当用户在出发地或目的地字段(表格中)开始数字时,它将显示可能的匹配机场列表。我阅读了文档,但我不明白这是怎么做的,也许我误解了一切。
url.py:
url(
r'^fly-autocomplete/$',
Fly.as_view(),
name='fly-autocomplete',
),
views.py:
class Fly(autocomplete.Select2QuerySetView):
def get_queryset(self):
form = AeroForm()
qs = AirportName.objects.all()
if self.q:
qs = qs.filter(name__istartswith=self.q)
return qs
forms.py:
class AeroForm(forms.ModelForm):
class Meta:
model = Aero
fields = ('__all__')
widgets = {
'departure': autocomplete.ModelSelect2(url='fly-autocomplete'),
'destination': autocomplete.ModelSelect2(url='fly-autocomplete'),
}