首先,我想说的是,我认为autocomplete_light包是一个很好的、维护良好的包,但作为一个相对新手,我对它有一些问题。
我使用'pip自动完成-light‘升级了我的autocomplete_light版本。
据我所知,这不应该安装v2或开发版本的项目-从这个链接读取。
在虚拟环境中检查站点包dir,我安装了以下代码: django_autocomplete_light-2.0.0a8-py2.7.egg-info
有其他方法检查版本吗?例如,我能做这样的事情吗?
python manage.py shell
import autocomplete_light
print autocomplete_light.VERSION(这不起作用)
我的主要问题是在升级之后,我在django项目中看到了以下错误消息:
“模块”对象没有属性“get_widgets_dict”
我的forms.py看起来是这样的:
from django.db import models
from django import forms
from django.forms import ModelForm
import autocomplete_light
from vehicle_admin_ac3.models import mycar
class mycarForm(autocomplete_light.ModelForm):
year = forms.DateField(widget=forms.TextInput(attrs=
{
'id':'datepicker'
}))
class Meta:
widgets = autocomplete_light.get_widgets_dict(mycar)
model = mycar
exclude = ['owner', 'uploaded']我查看了文档,其中提到了为什么不应该再直接使用小部件了,但我没有看到如何解决问题的明确解释。
我决定使用以下命令下载并安装我认为是最新的v2 test_project:
AUTOCOMPLETE_LIGHT_VERSION="v2"
rm -rf autocomplete_light_env/
virtualenv autocomplete_light_env
source autocomplete_light_env/bin/activate
pip install -e git+git://github.com/yourlabs/django-autocomplete-light.git@$AUTOCOMPLETE_LIGHT_VERSION#egg=autocomplete_light
cd autocomplete_light_env/src/autocomplete-light/test_project
pip install -r requirements.txt
./manage.py runserver在/non_admin/widget/add/上的示例可以做我想做的事情,但是当我为这个示例检查form.py时,它使用的方法与我之前使用的方法相同。
from django import forms
import autocomplete_light
from models import Widget
# in the case of this example, we could just have:
# WidgetForm = autocomplete_light.modelform_factory(Widget)
# but we'll not use this shortcut
class WidgetForm(forms.ModelForm):
class Meta:
widgets = autocomplete_light.get_widgets_dict(Widget)
model = Widget我现在非常困惑,我需要去哪里来修复我的代码,或者为我想要做的事情获取一个简单的示例。如有任何信息或指导,我将不胜感激。
发布于 2014-01-16 00:44:57
pip install django-autocomplete-light不安装v2
只要试用一个新的虚拟服务器,您就会发现pip默认不安装alpha(所有发布的v2s都是alphas):
[env] 16/01 2014 01:37:11 jpic@etta /tmp
$ virtualenv foo
Using real prefix '/usr'
New python executable in foo/bin/python
Installing Setuptools..............................................................................................................................................................................................................................done.
Installing Pip.....................................................................................................................................................................................................................................................................................................................................done.
[env] 16/01 2014 01:37:17 jpic@etta /tmp
$ cd foo/
[foo] 16/01 2014 01:37:20 jpic@etta /tmp/foo
$ pip install django-autocomplete-light
Downloading/unpacking django-autocomplete-light
Downloading django-autocomplete-light-1.4.12.tar.gz (52kB): 52kB downloaded
Running setup.py egg_info for package django-autocomplete-light
warning: no files found matching '*.mo' under directory 'autocomplete_light'
Installing collected packages: django-autocomplete-light
Running setup.py install for django-autocomplete-light
warning: no files found matching '*.mo' under directory 'autocomplete_light'
Successfully installed django-autocomplete-light
Cleaning up...
[foo] 16/01 2014 01:37:36 jpic@etta /tmp/foo
$ pip install -U django-autocomplete-light
Requirement already up-to-date: django-autocomplete-light in ./lib/python2.7/site-packages
Cleaning up...您可以通过import autocomplete_light; print autocomplete_light.__path__来检查python从哪里加载它。
升级到v2
get_widgets_dict确实从v2中删除了,因为v2有一个更好的设计,它利用了表单字段。
您正在扩展autocomplete_light.ModelForm,您不需要其他任何东西()。现在,您可以设置Meta.autocomplete_excludes、Meta.autocomplete_fields、Meta.autocomplete_names,如果您想要覆盖autocomplete_light.ModelForm的默认行为。
FTR,升级文档在这里:http://django-autocomplete-light.readthedocs.org/en/v2/1to2.html
您正在从v1中选择示例并尝试在v2上应用它们!
我可以肯定的是,在test_project of v2分支中没有任何示例使用get_widgets_dict,它已经被完全删除,以支持允许更好的验证流程和性能的表单字段。
你的问题已经解决了
我敢打赌,到现在为止,您已经自己解决了问题,删除了对get_widgets_dict的调用。特别是因为它在自述文件中以粗体表示:https://github.com/yourlabs/django-autocomplete-light/
抱歉,我不认为用户会这么难跟踪.哦,我想我还在学习;)
https://stackoverflow.com/questions/20983438
复制相似问题