Django自动完成灯光v3来自db
我已经用Jquery直接在HTML页面中实现了这一点,但我认为这不是一个好的解决方案,因为有一个大的项目列表。我认为最好在数据库中存储一个巨大的列表,而不是在我的情况下自动编译字段。Django自动完成灯光v3来自db,django,django-autocomplete-light,Django,Django Autocomplete Light,我已经用Jquery直接在HTML页面中实现了这一点,但我认为这不是一个好的解决方案,因为有一个大的项目列表。我认为最好在数据库中存储一个巨大的列表,而不是在我的情况下自动编译字段。 我想自动编译(与机场名称)两个字段(出发和目的地)。因此,在models.py中,我创建了两个类: class Aero(models.Model): departure = models.CharField(max_length=20) destination = models.CharField
我想自动编译(与机场名称)两个字段(出发和目的地)。因此,在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 airport填充数据库(我使用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'),
}
您是否能够
反向('fly-autocomplete')
?在url.py中,我添加“from django.core.urlsolvers import reverse”,然后添加“print(反向('fly-autocomplete'))”。在提示中显示“/fly autocomplete/”OK。下一步:您是否能够执行127.0.0.1:8000/飞行自动完成/?q=a
?或者不管这个url的完整url是什么。不,如果我使用那个链接,它会给我这个错误:FieldError at/fly autocomplete/无法将关键字“name”解析到字段中。选项有:air_name,id请求方法:GET请求URL:Django版本:1.11异常类型:FieldError异常值:无法将关键字“name”解析为字段。选项有:air\u name,id这是因为您的模型中没有name
字段。更改为:qs=qs.filter(air\u name\uu istartswith=self.q)
,然后重试。