django autocomplete_light可以显示一些东西而不是模型的字符串表示吗?

时间:2014-10-06 23:12:35

标签: django django-autocomplete-light

我使用django autocomplete_light进行模型搜索,但希望在自动完成的结果中显示与模型的默认字符串(即__unicode__())不同的内容。这可能吗?

3 个答案:

答案 0 :(得分:0)

是的,使用autocompleteListBase

class your_autocomplete_class(autocomplete_light.AutocompleteListBase):

names= model_name.objects.values_list('user__email', flat=True)
choices = [v for v in names]

autocomplete_light.register(your_autocomplete_class)

答案 1 :(得分:0)

,通过覆盖choice_label并返回显示的值以供选择。

示例

class BookAutocomplete(autocomplete_light.AutocompleteModelBase):
    search_fields = ['title']
    model = Book

    def choice_label(self, choice):
        return '"{0.title}" by {0.author}'.format(choice)

答案 2 :(得分:0)

您可以从BaseQuerySetView覆盖get_result_label方法。

(在下面的示例中,Select2QuerySetView继承自BaseQuerySetView)

class MyModelAutocompleteView(autocomplete.Select2QuerySetView):

    def get_queryset(self)
        return MyModel.objects.filter(name__icontains='foo')

    def get_result_label(self, result):
        return '{0} is a choice'.format(result)