只需要自己更改默认行为并遇到这个问题,希望它仍然可以帮助那里的人。
documentation 提到了使用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
现在要更改返回的 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)
总的来说,我做了这样的事情:
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