gpt4 book ai didi

javascript - Django 应用过滤器重新加载数据表

转载 作者:行者123 更新时间:2023-11-30 21:11:18 26 4
gpt4 key购买 nike

所以我有几个过滤器,用户可以应用它们来更改表中显示的信息。我有一个 Ajax 调用,每当用户点击这些过滤器之一时就会触发该调用:

        $.ajax({
url: '/fund_monitor/fund_directory',
type: 'GET',
data:JSON.stringify({
filter_dict: filter_dict
}),
success: function (data) {
}
});

很简单的东西。接下来,我的 Class Based View 将为这个 Ajax Call 提供服务。

def get(self, request, *args, **kwargs):
filtered_ids = []
if request.is_ajax():
#filter_dict = request.GET.getlist('filter_dict')
request_data = json.dumps(request.GET)
request_data = json.loads(request_data)
for each in request_data:
each = json.loads(each) # Just for parsing
for key, value in each['filter_dict'].items():
if key == 'Structure':
objects = Fund.objects.filter(structure__in=value).values('fund_account_id').distinct()
for fund_account_id in objects:
filtered_ids.append(fund_account_id['fund_account_id'])
elif key == 'Fund Class':
objects = Fund.objects.filter(fund_class__in=value).values('fund_account_id').distinct()
for fund_account_id in objects:
filtered_ids.append(fund_account_id['fund_account_id'])
elif key == 'Designated Broker':
objects = Fund.objects.filter(designated_broker__in=value).values('fund_account_id').distinct()
for fund_account_id in objects:
filtered_ids.append(fund_account_id['fund_account_id'])

filtered_ids = set(filtered_ids)
context = self.get_context_data(filtered_ids, **kwargs)
self.template_name = 'fund_monitor/fundaccount_table_list.html'
return self.render_to_response(context)
context = self.get_context_data(**kwargs)
return self.render_to_response(context)

所以在我收集了所有我想在表格中显示的 ids 之后,我将它传递给 get_context_data 函数,该函数接受所有这些 ids根据ids获取需要的信息。

def get_context_data(self, filtered_ids=None, **kwargs):
context = super(__class__, self).get_context_data(**kwargs)
context['nbar'] = 'fund_monitor'
context['sbar'] = 'fundaccount_list'
context['transmission'] = 3

if filtered_ids:
context['fundaccount_list'] = self.model.objects.filter(id__in=filtered_ids)
else:
context['fundaccount_list'] = self.model.objects.all()
url_dict = defaultdict(list)
for fund in context['fundaccount_list']:
end_date = str(NAV.objects.filter(fund= fund.id, transmission=3).values('valuation_period_end_date').order_by('-valuation_period_end_date')[0]['valuation_period_end_date'])
start_date = str(NAV.objects.filter(fund= fund.id, transmission=3).values('valuation_period_end_date').order_by('-valuation_period_end_date')[1]['valuation_period_end_date'])

url_dict[fund.account_description].extend([fund.id,context['transmission'],
start_date, end_date])
context['obj_items'] = dict(url_dict)
return context

因此在它返回上下文之后,在 get 函数中,行:

self.template_name = 'fund_monitor/fundaccount_table_list.html'   
return self.render_to_response(context)

应该使用修改后的模板名称运行。这个 template_name 基本上只包含表格 HTML。基本上,我只希望表格自行刷新而不是整个页面......但是,当 context 由于过滤器而更新时,表格不会重新加载。有什么想法吗?

最佳答案

简单的解决方案:

   $.ajax({
url: '/fund_monitor/fund_directory',
type: 'GET',
data:JSON.stringify({
filter_dict: filter_dict
}),
success: function (data) {
$("#myTable").html(data); // Add this line to your based on your table div
}
});

关于javascript - Django 应用过滤器重新加载数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46102918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com