如何使用 django-autocomplete-light 更改选项值?

Pri*_*ate 1 python django autocomplete django-autocomplete-light

我以相当标准的方式使用 django-autocomplete-light,只需按照http://django-autocomplete-light.readthedocs.io/en/master/tutorial.html上的教程进行操作。

但是,每当我使用 Select2 小部件时,选项的值都会自动成为模型实例的主键。有没有办法使用将值设置为模型的另一个字段?

Mic*_* Xu 5

只需要自己更改默认行为并遇到这个问题,希望它仍然可以帮助那里的人。

文件提到的使用返回不同的标签的方式get_result_label

class CountryAutocomplete(autocomplete.Select2QuerySetView):
    def get_result_label(self, item):
        return item.full_name

    def get_selected_result_label(self, item):
        return item.short_name
Run Code Online (Sandbox Code Playgroud)

现在要更改返回的 id,它非常相似。只需覆盖get_result_value

def get_result_value(self, result):
    """
    this below is the default behavior, 
    change it to whatever you want returned
    """
    return str(result.pk)
Run Code Online (Sandbox Code Playgroud)

总之,我做了这样的事情:

class TagAutocomplete(autocomplete.Select2QuerySetView):

    def get_result_value(self, result):
        return str(result.name)

    def get_queryset(self):
        qs = Tag.objects.all()
        if self.q:
            q = self.q
            qs = qs.filter(
                        Q(name__icontains=q)
                    )
        return qs
Run Code Online (Sandbox Code Playgroud)