我查找了像这样的自动完成功能:
class PrerequisitesLookup(ModelLookup):
"""Prerequisites"""
model=Material
search_fields = ('prerequisites__istartswith',)
def get_item_value(self, item):
return item.prerequisites
def get_item_label(self, item):
return u"%s" % item.prerequisites
registry.register(PrerequisitesLookup)
现在,许多数据库条目只有先决条件“无”,我只想在自动完成列表中使用一次。我可以用django-selectable实现这个目标,如果是的话,怎么做?
答案 0 :(得分:1)
如果您对选择Material
实例不感兴趣而只想选择与prerequisites
字段匹配的文字,则可以覆盖get_query
https://django-selectable.readthedocs.org/en/version-0.7.0/lookups.html#lookup-api
class PrerequisitesLookup(ModelLookup):
"""Prerequisites"""
model=Material
search_fields = ('prerequisites__istartswith', )
def get_query(self, request, term):
qs = super(PrerequisitesLookup, self).get_query(request, term)
return qs.values_list('prerequisites', flat=True).distinct()
def get_item_id(self, item):
return item
registry.register(PrerequisitesLookup)
请注意,各种格式设置方法中的item
(get_item_label
,get_item_id
,get_item_value
)将是prerequisites
字符串而不是{{1}这个实例就是为什么必须覆盖默认的Material
。