我有一个 Django 项目,其中包含两个应用程序,费用和销售,它们都有名为 Item 的模型。我正在使用django-autocomplete-light来简化项目的选择。这适用于费用或销售,具体取决于我最后注册的渠道,但另一个错误地显示相同的项目。
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)')
管理员.py
对于销售应用程序,费用相似
import autocomplete_light
class SalesItemInline(admin.TabularInline):
fields = ('item', )
model = SalesItem
form = autocomplete_light.modelform_factory(SalesItem)
使用自动完成字段时检查日志,我看到从两个视图中获取相同的 url。
“GET /autocomplete/channel/ItemChannel/?q= HTTP/1.1” 200 1416
如何配置此销售列表。项目在管理员销售视图中返回,费用列表在管理员费用视图中返回?