0

首先我想说,我认为 autocomplete_light 包是一个不错的、维护良好的包,但作为一个相对新手,我在使用它时遇到了一些问题。

我使用“pip install django-autocomplete-light”升级了我的 autocomplete_light 版本。

据我所知,这不应该安装 v2 或项目的开发版本 - 从此链接读取。

检查我的虚拟环境中的站点包目录我安装了以下内容: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

我现在很困惑我需要去哪里修复我的代码或获取我想要做的简单示例。我将不胜感激任何信息或指导。

4

1 回答 1

1

pip install django-autocomplete-light不安装 v2

只需尝试一个新的 virtualenv,你会发现 pip 默认不安装 alphas(所有发布的 v2 都是 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_fieldsMeta.autocomplete_names如果您想覆盖autocomplete_light.ModelForm的默认行为。

FTR,升级文档在这里:http ://django-autocomplete-light.readthedocs.org/en/v2/1to2.html

您正在从 v1 中挑选示例并尝试将它们应用于 v2 !

我可以保证 v2 分支的 test_project 中没有示例使用get_widgets_dict,它已被完全删除,以支持允许更好的验证流程和性能的表单字段。

你的问题已经解决了

我敢打赌,你已经自己解决了你的问题,get_widgets_dict现在取消了对的调用。特别是因为它在自述文件中以粗体显示:https ://github.com/yourlabs/django-autocomplete-light/

对不起,我不认为用户会那么难跟随......哦,我想我还在学习;)

于 2014-01-16T00:44:57.677 回答