Django-JQuery从多个字段中自动完成自定义选择



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

这是我的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自动完成文档可以发现,您可以为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>

最新更新