【问题标题】:How to change the option values with django-autocomplete-light?如何使用 django-autocomplete-light 更改选项值?
【发布时间】:2018-05-31 22:14:15
【问题描述】:

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

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

【问题讨论】:

    标签: python django autocomplete django-autocomplete-light


    【解决方案1】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 2016-03-29
      • 2015-10-15
      • 2021-10-29
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      相关资源
      最近更新 更多