自动完成 - 不加载选择列表

时间:2012-12-21 16:46:39

标签: django django-autocomplete-light

我正在尝试在我的应用的管理区域中运行自动完成灯。文档位于此处:

外键选择列表消失,基本文本框按预期显示。但是选择列表没有显示出来。

我已经安装了应用程序,并在我的urls.py中放置了相应的include。

相关模型:

class Inventory(models.Model):
    title = models.CharField(max_length=100, db_index=True)
    product_code = models.CharField(max_length=100, db_index=True, primary_key = True)

class Customer_Order(models.Model):
    order_id = models.CharField(max_length=100, db_index=True, null = True, blank = True)
    customer_id = models.ForeignKey('inventory.Customer')
    products = models.ManyToManyField('inventory.Inventory', through='inventory.Customer_Order_Products')

class Customer_Order_Products(models.Model):
    order_id = models.ForeignKey('inventory.Customer_Order')
    product_id = models.ForeignKey('inventory.Inventory')

autocomplete_light_registry.py:

import autocomplete_light
from inventory.models import Inventory

autocomplete_light.register(Inventory, search_fields=('title',),
               autocomplete_js_attributes={'placeholder': 'city name ..'})

admin.py:

class Customer_Order_ProductsInline(enhanced_admin.EnhancedAdminMixin, admin.TabularInline):
    model = Customer_Order.products.through
    extra = 0
form = autocomplete_light.modelform_factory(Customer_Order_Products)

class Customer_OrderAdmin(enhanced_admin.EnhancedModelAdminMixin, admin.ModelAdmin):
     inlines = (Customer_Order_ProductsInline, OrderStatusInline )  

我自己的调试:

  • 我已经去了/ autocomplete /并找到了库存标题的注册列表,但它没有完整。它只显示了155个中的大约20个。

  • 我确保在html中加载了正确的文件。所有包含似乎都出现了。我在终端上为所有这些代码获得了304代码,但我认为这没关系。我似乎无法确保正在加载的唯一内容是jquery的链接。我在html源代码的标题中找到了脚本的链接,并检查了链接(https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js)

更新**

  • 我刚在Web开发人员错误控制台中发现此错误:TypeError:'undefined'不是第297行的widget.js中的函数(评估'$(this).yourlabsWidget()')。这表明至少正在加载widget.js。

  • 最后,当我更新现有的Customer_Order时,空白字段显示NEXT到常规外键下拉。不是取而代之的。我不知道为什么会这样。

我希望某人有类似的问题,或者有一些调试建议。我是Django的新手,我的调试技巧最多也缺乏。

HTML:

<!DOCTYPE html>
<html lang="en-us" >
<head>
<title>Add Customer Order | Art & Fibre</title>
<link rel="stylesheet" type="text/css" href="/static/admin/css/base.css" />
<link rel="stylesheet" type="text/css" href="/static/admin/css/forms.css" />
<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="/static/admin/css/ie.css" /><![endif]-->

<script type="text/javascript">window.__admin_media_prefix__ = "/static/admin/";             </script>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript" src="/static/autocomplete_light/autocomplete.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/widget.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/addanother.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/text_widget.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/remote.js"></script>
<link rel="stylesheet" type="text/css" href="/static/autocomplete_light/style.css" />

然后在......

<span class="autocomplete-light-widget customer_order_products_set-0-product_id
single"
id="id_customer_order_products_set-0-product_id-wrapper"
data-max-values="1" data-bootstrap="normal"
data-autocomplete-url="/autocomplete/InventoryAutocomplete/" data-autocomplete-choice-selector="[data-value]" data-autocomplete-placeholder="Product name .."
>

1 个答案:

答案 0 :(得分:0)

所以我也是Django和自动完成灯工具栏的新手,但是我让它为我工作。有几点需要调试:

  • Firefox和Firebug对我非常有用。您可以在页面中查看javascript和html的实时加载内容。 (因此,您可以在框中键入时查看正在进行的自动填充灯查询)
  • Django-debug-toolbar也非常有用。您可以看到对数据库进行了哪些查询。
  • 我无法从您发布的代码段中看出来,但您是否在admin / base_site.html或customer_order / index.html模板中包含以下内容?

    {%include'autocomplete_light / static.html'%}

  • 您的admin.py文件末尾似乎也遗漏了这个:

    admin.site.register(Customer_Order,Customer_OrderAdmin)