Django - JQuery 从多个字段自动完成自定义 select

Django - JQuery autocomplete custom select from multiple fields

我有一个用户搜索,可以通过代码和名称自动完成。返回的搜索结果为“{{ticker}} - {{name}}”。选择结果后,我希望它只填充代码,因为它当前填充的是“{{ticker}} - {{name}}”。

这是我的 python 代码:

if 'term' in request.GET:
    tickers = Company.objects.filter(ticker__istartswith = request.GET.get('term')) | Company.objects.filter(name__istartswith = request.GET.get('term'))
    companies = []
    for ticker in tickers:
        companyTicker = ticker.ticker +  " - " + ticker.name
        companies.append(companyTicker)
    return JsonResponse(companies, safe=False)

这是我的 javascript:

    <script>
    $( function() {
      $( "#ticker3" ).autocomplete({
        source: '{% url "financials:get_financials" %}',
        select: function (event, ui) {
            ticker.ticker
        }
      });
    } );
    </script>

非常感谢任何帮助!

快速浏览一下 jquery autocomplete docs 就会发现您可以为 source 选项使用一个对象数组。每个对象都应该有一个 labelvalue 属性。以下内容应该可以满足您的需求。

if 'term' in request.GET:
    tickers = Company.objects.filter(ticker__istartswith = request.GET.get('term')) | Company.objects.filter(name__istartswith = request.GET.get('term'))
    companies = []
    for ticker in tickers:
        label = f"{ticker.ticker} - {ticker.name}"
        companyTicker = {'label': label, 'value': ticker.ticker}
        companies.append(companyTicker)
    return JsonResponse(companies, safe=False)

然后您可以删除 javascript:

中的 select 选项
  <script>
      $(function () {
          $("#ticker3").autocomplete({
              source: '{% url "financials:get_financials" %}',
          });
      });
  </script>