使用Select2小部件的django-autocomplete-light初始数据

时间:2017-03-23 11:44:04

标签: django django-autocomplete-light

我有一个带有自动填充功能的表单字段(使用django-autocomplete-light应用程序和Select2小部件),它用作搜索过滤器,并按预期工作。

当我提交表单并列出搜索结果时,我想将此表单字段的初始值设置为先前提交的值 - 因此用户可以调整一些搜索参数,而不是从头开始设置所有搜索过滤器。 / p>

此表单字段将用于选择~10000个值中的一个,因此我需要它按需加载值。由于表单字段没有预填充任何值,我不知道如何设置初始值。

models.py

class Location(models.Model):
    place = models.CharField(max_length=50)
    postal_code = models.CharField(max_length=5)

views.py

class LocationAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):
        qs = Location.objects.all()
        if self.q:
            qs = qs.filter(place__istartswith=self.q) | qs.filter(postal_code__istartswith=self.q)
        return qs

forms.py

class LocationForm(forms.ModelForm):        
    class Meta:
        model = Location
        fields = ('place',)
        widgets = {
            'place': autocomplete.Select2(url='location_autocomplete')
        }

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

views.py中,如果您传递的地方值如下:

LocationForm(initial={'place': place })

它将在您的表单中预先填充。

文档:https://docs.djangoproject.com/en/1.11/ref/forms/fields/#initial