Django 自动完成自动完成未注册错误

标签 django django-forms django-autocomplete-light

当我在 Django 上启动 runserver 命令时,收到如下错误:

autocomplete_light.exceptions.AutocompleteNotRegistered: CityAutocomplete not registered (registry is empty)

令我困惑的是 CityAutocomplete 已注册,我通过访问 localhost:8000/autocomplete/CityAutocomplete 进行了检查

有人知道这是怎么回事吗? 这是我的 表单.py:

class OppForm(forms.ModelForm):
    opp_city = forms.ModelChoiceField(City.objects.all(), widget=autocomplete_light.ChoiceWidget('CityAutocomplete'))

class Meta:
    model = Opportunity
    fields = ('name','start', 'end', 'expiration','description','opp_type','location','street_address','opp_city', 'hours_per_week','opp_pic','extra_field_number','label1','label2','label3','label4','label5',)
    exclude = ('by_booth','opp_by')
def __init__(self, *args, **kwargs):
    super(OppForm, self).__init__(*args, **kwargs)
    self.fields['extra_field_number'].label = "Number of Extra Fields"

这是我的 autocomplete_light_registry.py:

import autocomplete_light

from cities_light.models import City

class CityAutocomplete(autocomplete_light.AutocompleteModelBase):
    search_fields = ['^name', ]

autocomplete_light.register(City, CityAutocomplete)

我的最终目标是尝试使用 django-cities-light 和 django-autocomplete 创建一个表单字段,允许用户输入城市以获得自动完成建议。 再次感谢!

更新: 我想到的一个可能的问题是,由于我的项目结构,小部件可能无法找到 CityAutocomplete。我的应用程序都位于项目目录中名为 apps 的文件夹中,而不是直接位于项目目录的根目录中。

最佳答案

您是否也将 autocomplete_light.autodiscover() 放入 forms.py 中?

文档说:

In urls.py, call autocomplete_light.autodiscover() before admin.autodiscover() and before any import of a form with autocompletes, it can look like this...

关于Django 自动完成自动完成未注册错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20982973/

相关文章:

Django 自动完成灯、taggit 和管理界面

python - 计算按周分组的单个列上值的出现次数

django - 从模板中获取 Django 表单小部件的类型

django - 使用 POST-Redirect-GET 模式时如何显示提交表单的状态?

python - 在 Django 中将 CSS 类添加到整个表单

django-autocomplete-light 与脆形式

python - 如何使用 django-autocomplete-light 更改选项值?

django - 如何解决不存在的字段的完整性错误?

python - Django annotate() 性能 - 它应该 super 慢吗?

mysql - 备份数据库 Django MysqlDump