アプリの管理領域で autocomplete-light を機能させようとしています。ドキュメントは次の場所にあります。
外部キーの選択リストが消え、基本的なテキスト ボックスが期待どおりに表示されます。しかし、選択リストは表示されません。
アプリをインストールし、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/ に行ったところ、インベントリ タイトルの登録済みリストが見つかりましたが、完全ではありません。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 (evaluating '$(this).yourlabsWidget()') in widget.js on line 297. これは、少なくとも widget.js がロード中です。
最後に、既存の Customer_Order を更新すると、空白のフィールドが通常の外部キー プルダウンの隣に表示されます。その代わりではありません。なぜこれが起こっているのか分かりません。
誰かが同様の問題を抱えているか、デバッグのアドバイスがあることを望んでいました。私は 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 .."
>