Django 自动完成灯列表对象没有属性查询集
Django Autocomplete Light List Object has no Attribute Queryset
也请查看我在代码末尾所做的编辑。
我正在尝试为单个字段实现 django-autocomplete-light (dal 3.2.10)。按照教程,我出现了这个错误:'list' object has no attribute 'queryset'。
我看到了这个问题:django-autocomplete-light error = 'list' object has no attribute 'queryset'。它没有解决我的问题。
为什么会出现这个错误?我能做些什么来解决这个问题?
我认为这不是全部问题,但我没有在浏览器检查器中看到任何 js 文件。我认为在编辑 #3 中包含代码会导致出现一些问题。
我有两个模型:
class Entity(models.Model):
entity = models.CharField(primary_key=True, max_length=12)
entityDescription = models.CharField(max_length=200)
def __str__(self):
return self.entityDescription
class Action(models.Model):
entity = models.ForeignKey(Entity, on_delete=models.CASCADE, db_column='entity')
entityDescription = models.CharField(max_length=200)
action = models.CharField(max_length=50)
def __str__(self):
return '%s' % self.entity
我有一个模型表单和表单集。我还使用 crispy-forms 来呈现表单集:
class ActionForm(ModelForm):
class Meta:
model = Action
fields = '__all__'
widgets = {
'entityDescription': autocomplete.ModelSelect2(url='eda')
}
ActionFormSet = modelformset_factory(Action, extra=1, exclude=(), form=ActionForm)
我有一个看法:
class EntityDescriptionAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
qs = Entity.objects.all()
if self.q:
qs = qs.filter(entityDescription__istartswith=self.q)
return qs
我有一个 urls.py:
urlpatterns = [
url(
r'^eda/$',
views.EntityDescriptionAutocomplete.as_view(),
name='eda',
),
]
感谢大家提供的任何见解。
编辑:
我改变了...
widgets = {
'entityDescription': autocomplete.ModelSelect2(url='eda'),
}
...到...
widgets = {
'entityDescription': autocomplete.Select2(url='eda'),
}
...这允许我的页面呈现,但自动完成字段是一个空的下拉列表。为什么它是空的,为什么它不是自动完成框?
编辑#2:
我删除了元 class 中的小部件设置,而是直接覆盖该字段:
class ActionForm(ModelForm):
entityDescription = ModelChoiceField(
queryset=Entity.objects.all(),
widget=autocomplete.ModelSelect2(url='eda')
)
class Meta:
model = Action
fields = '__all__'
这仍然是 returns 一个空的下拉列表(不是自动完成框),但它现在有 Django 的 -------
指示符,而不是什么都没有。
编辑#3:
我将此添加到我的模板中:
{% block footer %}
<script type="text/javascript" src="/static/collected/admin/js/vendor/jquery/jquery.js"></script>
{{ form.media }}
{% endblock %}
没有改变。
你的 ActionForm
和 EntityDescriptionAutocomplete
看起来不错。
您的自动完成视图是否返回结果?
您应该能够浏览到自动完成视图的 URL(在您的情况下 /eda
)并查看查询的 JSON 结果。集合是否非空?
{"pagination": {"more": true}, "results": [{"text": "foo", "id": "1" ...
^^^^^^^^^^^^^^^^^^^^^^^^
您渲染的 HTML 是否包含库?
您应该会在 HTML 来源中看到以下内容,其中放置了 {{ form.media }}
标签:
<link href="/static/autocomplete_light/vendor/select2/dist/css/select2.css" type="text/css" media="all" rel="stylesheet" />
<link href="/static/autocomplete_light/select2.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="/static/autocomplete_light/jquery.init.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/autocomplete.init.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/vendor/select2/dist/js/select2.full.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/select2.js"></script>
如果没有,
您指的是正确的表格变量吗?
{{ form.media }}
中的 form
应引用您在传递给页面模板的上下文中为表单指定的任何名称。
也请查看我在代码末尾所做的编辑。
我正在尝试为单个字段实现 django-autocomplete-light (dal 3.2.10)。按照教程,我出现了这个错误:'list' object has no attribute 'queryset'。
我看到了这个问题:django-autocomplete-light error = 'list' object has no attribute 'queryset'。它没有解决我的问题。
为什么会出现这个错误?我能做些什么来解决这个问题?
我认为这不是全部问题,但我没有在浏览器检查器中看到任何 js 文件。我认为在编辑 #3 中包含代码会导致出现一些问题。
我有两个模型:
class Entity(models.Model):
entity = models.CharField(primary_key=True, max_length=12)
entityDescription = models.CharField(max_length=200)
def __str__(self):
return self.entityDescription
class Action(models.Model):
entity = models.ForeignKey(Entity, on_delete=models.CASCADE, db_column='entity')
entityDescription = models.CharField(max_length=200)
action = models.CharField(max_length=50)
def __str__(self):
return '%s' % self.entity
我有一个模型表单和表单集。我还使用 crispy-forms 来呈现表单集:
class ActionForm(ModelForm):
class Meta:
model = Action
fields = '__all__'
widgets = {
'entityDescription': autocomplete.ModelSelect2(url='eda')
}
ActionFormSet = modelformset_factory(Action, extra=1, exclude=(), form=ActionForm)
我有一个看法:
class EntityDescriptionAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
qs = Entity.objects.all()
if self.q:
qs = qs.filter(entityDescription__istartswith=self.q)
return qs
我有一个 urls.py:
urlpatterns = [
url(
r'^eda/$',
views.EntityDescriptionAutocomplete.as_view(),
name='eda',
),
]
感谢大家提供的任何见解。
编辑:
我改变了...
widgets = {
'entityDescription': autocomplete.ModelSelect2(url='eda'),
}
...到...
widgets = {
'entityDescription': autocomplete.Select2(url='eda'),
}
...这允许我的页面呈现,但自动完成字段是一个空的下拉列表。为什么它是空的,为什么它不是自动完成框?
编辑#2:
我删除了元 class 中的小部件设置,而是直接覆盖该字段:
class ActionForm(ModelForm):
entityDescription = ModelChoiceField(
queryset=Entity.objects.all(),
widget=autocomplete.ModelSelect2(url='eda')
)
class Meta:
model = Action
fields = '__all__'
这仍然是 returns 一个空的下拉列表(不是自动完成框),但它现在有 Django 的 -------
指示符,而不是什么都没有。
编辑#3:
我将此添加到我的模板中:
{% block footer %}
<script type="text/javascript" src="/static/collected/admin/js/vendor/jquery/jquery.js"></script>
{{ form.media }}
{% endblock %}
没有改变。
你的 ActionForm
和 EntityDescriptionAutocomplete
看起来不错。
您的自动完成视图是否返回结果?
您应该能够浏览到自动完成视图的 URL(在您的情况下 /eda
)并查看查询的 JSON 结果。集合是否非空?
{"pagination": {"more": true}, "results": [{"text": "foo", "id": "1" ...
^^^^^^^^^^^^^^^^^^^^^^^^
您渲染的 HTML 是否包含库?
您应该会在 HTML 来源中看到以下内容,其中放置了 {{ form.media }}
标签:
<link href="/static/autocomplete_light/vendor/select2/dist/css/select2.css" type="text/css" media="all" rel="stylesheet" />
<link href="/static/autocomplete_light/select2.css" type="text/css" media="all" rel="stylesheet" />
<script type="text/javascript" src="/static/autocomplete_light/jquery.init.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/autocomplete.init.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/vendor/select2/dist/js/select2.full.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/select2.js"></script>
如果没有,
您指的是正确的表格变量吗?
{{ form.media }}
中的 form
应引用您在传递给页面模板的上下文中为表单指定的任何名称。