2012-12-21 25 views
2

我試圖讓自動完成燈在我的應用的管理區域工作。該文檔位於這裏:自動完成燈不加載選擇列表

的外鍵選擇列表dissapearing和預期基本文本框出現。但是選擇列表沒有顯示出來。

我已經安裝了應用程序,並將相應的包含放在了我的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 ..'}) 

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 /並找到了庫存標題的註冊清單,但是它並不完整。它只顯示了其中的20箇中的大約155個。

  • 我已經確認正確的文件正在加載到html中。所有的包括似乎都顯示出來。我在終端上得到了一個304代碼,但我認爲這沒問題。唯一我似乎無法確保被加載的是jquery的鏈接。我在html源代碼的頭部找到了腳本的鏈接,並檢查了似乎可以正常工作的鏈接(https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js) 。

修訂版**

  • 我剛剛發現這個錯誤的Web開發人員錯誤控制檯:類型錯誤: '未定義' 不是一個函數(計算 '$(本).yourlabsWidget()' )在第297行的widget.js中。這表明至少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 .." 
> 
+0

你確定jQuery沒有被加載多次嗎? – jpic

回答

0

所以我也是新Django和自動完成光欄,但我得到了它爲我工作。幾個調試的東西:

  • Firefox加Firebug對我來說真的很有用。您可以實時查看JavaScript和html頁面中實時加載的內容。 (所以你可以看到當你在輸入框中輸入自動完成燈查詢時)
  • Django-debug-toolbar也非常有用。您可以看到正在對數據庫進行哪些查詢。
  • 我無法從您發佈的代碼片斷中知道,但是您是否在管理/ base_site.html或customer_order/index.html模板中包含以下內容?

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

  • 也似乎在你的admin.py文件的末尾缺少這樣的:

    admin.site.register(CUSTOMER_ORDER, Customer_OrderAdmin)

+0

感謝您的時間!我正在使用Safari開發人員工具。據我所知,一切正在加載。但這些查詢不會引起任何請求。即:當我在文本字段中輸入時,什麼也沒有發生(順便說一句,甚至沒有出現佔位符)。我似乎無法通過一個未定義的函數錯誤。如果widget.js沒有被加載,哪個函數不能被調用。無論如何,我想我並不十分清楚。但不用擔心,我已經註冊了我的管理員。 – Jglstewart

+0

我要檢查的一件事是,js文件正在正確加載 - 它可能位於錯誤的目錄中。當你檢查頁面源代碼時,你需要在Header中看到這個