2

我正在尝试让自动完成灯在我的应用程序的管理区域中工作。文档位于此处:

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

我已经安装了该应用程序并将适当的包含在我的 urls.py 中。

相关型号:

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 ..'})

管理员.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' is not a function (evalating '$(this).yourlabsWidget()') in widget.js on line 297. 这表明至少 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 .."
>
4

1 回答 1

0

所以我对 Django 和 autocomplete-light 工具栏也是新手,但我让它为我工作。调试的几件事:

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

    {% 包括 'autocomplete_light/static.html' %}

  • 您似乎在 admin.py 文件的末尾也缺少此内容:

    admin.site.register(Customer_Order, Customer_OrderAdmin)

于 2012-12-30T20:08:46.813 回答