django-selectable:仅显示不同的自动填充

时间:2013-09-25 10:17:27

标签: django autocomplete

我查找了像这样的自动完成功能:

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实现这个目标,如果是的话,怎么做?

1 个答案:

答案 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)

请注意,各种格式设置方法中的itemget_item_labelget_item_idget_item_value)将是prerequisites字符串而不是{{1}这个实例就是为什么必须覆盖默认的Material