使用django-cities-light与django-crispy-forms和django-ajax-chosen

时间:2014-11-07 12:39:15

标签: django django-crispy-forms django-ajax-selects

我需要有一个表单,用户输入姓名,发送电子邮件并选择城市和国家/地区。我正在使用django-cities-light使用城市和国家/地区列表填充数据库。

然后,我使用数据库模型使用django-crispy-forms创建表单,如下所示。

Models.py

from cities_light.models import City, Country

class CustomModel(models.Model):
    name = models.CharField(max_length=500)
    email = models.EmailField(blank=True)
    city = models.ForeignKey(City)
    country = models.ForeignKey(Country)

Forms.py

Class EntryForm(forms.ModelForm):
    class Meta:
        model = CustomModel

    def __init__(self, *args, **kwargs):
        super(EntryForm, self).__init__(*args, **kwargs)

        self.helper = FormHelper(self)
        self.helper.layout.append(ButtonHolder(
            Submit('save', 'Save', css_class='btn-primary')
            )
        )

在视图中使用它会给我一个表单,其中包含两个文本字段(用于名称,电子邮件)和两个选择字段(用于城市,国家/地区)。现在,由于城市数量非常多,我希望将这些更改为使用django-ajax-selects显示用户开始输入时的城市或国家/地区名称的文本字段。

documentation的一部分提供了AJAX_LOOKUP_CHANNELS,但我不太明白如何更改我的表单然后将其与ajax-choices连接。任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:3)

请参阅django-ajax的文档 - 选择django-ajax-选择用法:https://github.com/crucialfelix/django-ajax-selects#quick-installation

请注意,@ yourlabs我们现在使用django-autocomplete-light,因此它不再受支持了,但它还没有迁移到django-autocomplete-light的用户。