我有一个用户搜索,它可以通过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
选项使用一组对象。每个对象都应该有一个label
和value
属性。以下内容应能满足您的需求。
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>