【发布时间】:2020-05-11 19:57:35
【问题描述】:
我已经安装了django-autocomplete-light。
我的没有自动完成功能的表单如下所示:
class FilterForm(forms.Form):
form_origin = forms.CharField(label='From country',
max_length=100,
required=False,
widget=forms.TextInput(attrs={
'placeholder': 'From country',
'arial-label':'C2',
}))
form_target = forms.CharField(label='To country',
max_length=100,
required=False,
widget=forms.TextInput(attrs={
'placeholder': 'To country',
'arial-label': 'C1',
}))
我在instructions here 之后写了一个视图,它给出了所有以我输入的相同字母开头的国家。
class CountryAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
qs = Country.objects.all()
qs = qs.filter(name__istartswith=self.q)
return qs
但是,我在将它与具有两个字符字段的表单一起使用时遇到问题,两者都使用称为 Country 的相同模型。本教程不是为此量身定制的。本质上,我希望有两个文本框,自动完成国家往返,有点像天巡。任何关于正确方向的建议都值得赞赏!
我的模型如下所示:
class Country(models.Model):
iso3 = models.CharField('3 Digit ISO', max_length=3, unique=True)
name = models.CharField('Name', max_length=50)
lon = models.FloatField()
lat = models.FloatField()
def __str__(self):
return self.name
更新:
我的网址是这样的:
re_path(r'^country-autocomplete/$', views.CountryAutocomplete.as_view(), name='country-autocomplete'),
在 Sumit 的帮助下,我已将我的表单更新为:
form_origin = forms.CharField(label='From country',
max_length=100,
required=False,
widget=autocomplete.ListSelect2(
url='myapp:country-autocomplete',
))
但是我得到一个没有可选字段的下拉列表:
我正在使用引导程序,我的模板如下所示:
{% for field in form %}
<div class="form-inline form-group">
<div class="col-sm-10">
{{ field|attr:"class:form-control" }}
</div>
</div>
{% endfor %}
【问题讨论】:
标签: python django django-forms django-autocomplete-light