我有一个Django项目包含两个应用程序,费用和销售,这两个应用程序的模型都命名为Item。我使用django自动完成灯来简化项目的选择。这取决于我最后注册的频道的费用或销售额,但另一个频道错误地显示了相同的项目。在
自动完成指示灯_注册表.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
对于销售应用程序,费用类似
^{pr2}$在使用自动完成字段检查日志时,我看到从两个视图中获取的是同一个url。在
"GET /autocomplete/channel/ItemChannel/?q= HTTP/1.1" 200 1416
如何配置此so列表销售项目在管理销售视图和列表中返回费用.项目是否在“管理费用”视图中返回?在
在大多数情况下,channel类是生成的,它的名称也是生成的。但是,您可以避免生成通道类和生成通道名(希望如此,这样做真的很糟糕)。在
从registry documentation:
避免通道类生成的解决方案是在第三种情况下:使用model属性注册模型和通道类。在
自动完成指示灯_注册表.py
这将达到0.7rc2。在
从0.7rc3开始(待解决的问题结束时发布),register()有一个新的关键字参数
channel_name
,您可以使用它。在但是您应该小心代码,类中的query_filter()实现似乎与默认实现相同。。。在
相关问题 更多 >
编程相关推荐