我正在尝试让自动完成灯在我的应用程序的管理区域中工作。文档位于此处:
外键选择列表消失,基本文本框按预期出现。但是选择列表没有显示出来。
我已经安装了该应用程序并将适当的包含在我的 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 .."
>