我有一個Django項目包含兩個應用程序,費用和銷售都具有名爲項目的模型。我正在使用django-autocomplete-light來簡化Item的選擇。這適用於費用或銷售,具體取決於我最後註冊哪個渠道,但另一個渠道錯誤地顯示相同的項目。自動完成 - 輕的通道名稱衝突
autocomplete_light_registry.py
from sales.models import Item as SalesItem
from expenses.models import Item as ExpenseItem
class ExpenseChannel(autocomplete_light.ChannelBase):
def query_filter(self, results):
q = self.request.GET.get('q', None)
if q:
if results.model == ExpenseItem:
results = results.filter(
Q(name__icontains=q)
return results
class SalesChannel(autocomplete_light.ChannelBase):
def query_filter(self, results):
q = self.request.GET.get('q', None)
if q:
if results.model == SalesItem:
results = results.filter(
Q(name__icontains=q)
return results
autocomplete_light.register(ExpenseItem, ExpenseChannel, placeholder='Select an item (e)')
autocomplete_light.register(SalesItem, SalesChannel, placeholder='Select an item (s)')
admin.py
對於銷售的應用程序,在費用
import autocomplete_light
class SalesItemInline(admin.TabularInline):
fields = ('item',)
model = SalesItem
form = autocomplete_light.modelform_factory(SalesItem)
使用自動填充字段我看到,當檢查日誌相似從兩個視圖中獲取相同的網址。
「GET /自動/渠道/ ItemChannel/Q = HTTP/1.1」 200 1416
如何配置sales.Item這使列表在管理銷售視圖和列表返回costs.Item在管理費用視圖中返回?
非常感謝您解釋如何做到這一點,以及在註冊時用'channel_name'添加新功能。兩種解決方案都按預期工作,我將在發佈時使用關鍵字以節省代碼行。 – maGo
如果您沒有收到郵件列表中的電子郵件,它會發布:http://pypi.python.org/pypi/django-autocomplete-light/是的,channel_name功能可以在某些情況下保持代碼優雅,並且在其他一些情況下,裸註冊功能不會妨礙您的工作 – jpic