【问题标题】:Python Django autocomplete light the results could not be loadedPython Django 自动补全灯结果无法加载
【发布时间】:2019-07-22 11:43:09
【问题描述】:

我正在尝试为我的项目添加自动完成灯光,但我无法做到。如果我想在表格中找到任何内容:无法加载结果,TypeError: 'bool' object is not callable。我正在使用 Python 3.7 版和 django-autocomplete-light 3.3.5 版

该项目是用于跟踪分配给用户的订单的网络应用程序。

到我添加的 mysite/settings.py:

INSTALLED_APPS = [

'dal',
'dal_select2',
'crispy_forms',
'myapp',

到我添加的 mysite/myapp/urls.py:

path('autocomplete/', login_required(views.OrderAutocomplete.as_view()), name="autocomplete"),

到base.html:

<head>
{% load staticfiles %}
...
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>

到new_order.HTML:

<form method="POST">
{% csrf_token %}
{{ form|crispy }}
{{ form.media }}
<input type="submit">
</form>

在我添加的 mysite/myapp/views.py 中:

class ObjednavkaAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):
        # Don't forget to filter out results depending on the visitor !
        if not self.request.user.is_authenticated():
            return Objednavka.objects.none()

        qs = Order.objects.all()

        if self.q:
            qs = qs.filter(name__istartswith=self.q)

        return qs

在我添加的 mysite/myapp/forms.py 中:

class OrderForm(forms.ModelForm):
    user_auto = forms.ModelChoiceField(queryset=Order.objects.all(), widget = autocomplete.ModelSelect2(url='autocomplete'))
    class Meta:
        model = Order
        fields = ["user_auto"]

mysite/myapp/models.py:

from dal import autocomplete

class Order(models.Model):
   ...    
   user = models.ForeignKey(MyUser, on_delete=models.CASCADE)


class MyUser(models.Model):
   eid = models.CharField(max_length=7)

很抱歉发布了这么多代码。

如果我尝试在网页上查找用户:1:Img

【问题讨论】:

  • 您可以在您的问题中添加带有DEBUG = True 的日志吗?

标签: django python-3.x


【解决方案1】:

替换

if not self.request.user.is_authenticated()

有

if not self.request.user.is_authenticated

在 django>2.0 中是属性。见docs。

【讨论】:

  • 感谢您的回复,但没有帮助。
  • @pipikej 你确定你提供了有效的代码吗?在您的ObjednavkaAutocomplete 中,您返回Objednavka 实例(实际上是none()),但通过Order 模型过滤。在您的urls.py 中,您使用OrderAutocomplete 而不是ObjednavkaAutocomplete。
  • 代码有效我试图将这个词从捷克语翻译成英语,但我错过了其中的几个。 Objednavka == 订单
  • @pipikej 我只是复制您的项目并在本地运行它,正如我在is_authenticated() 中所说的那样。在我将其更改为 is_authenticated 后,它开始工作。
  • @Johny Beehop 我在 views.py 中设置了错误的过滤器现在它加载了所有用户,但如果我想输入任何它再次显示的内容:无法加载结果。 django.core.exceptions.FieldError:无法将关键字“用户”解析为字段。选项有:myid、id、name、order、surname。但是,如果我将任何选项放入小部件,它会显示经典的下拉选择菜单。
猜你喜欢
  • 2010-11-01
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 2019-01-14
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
相关资源
最近更新 更多