Пытались отфильтровать данные, используя django-фильтры. Код работает, когда я отправляю отдельный запрос POST или GET из шаблона. Я хочу избежать той дополнительной перезагрузки, которая имеет место для фильтрации информационной таблицы.
Вот вид:
def search(request):
dynamic_filter = [f.name for f in Controlpanel._meta.get_fields()]
class UserFilter(django_filters.FilterSet):
class Meta:
model = Controlpanel
fields = dynamic_filter
user_list = Controlpanel.objects.all()
user_filter = UserFilter(request.GET.get("filters[]"),
queryset=user_list)
chart = list(user_filter.qs.values())
return JsonResponse(chart, safe=False)
Вот код AJAX, который вызывает это представление выше:
$('#filter-data').on('submit', function (event) {
event.preventDefault();
var dynamic = $('#filter-data').serialize();
console.log($('#filter-data').serializeArray())
$.ajax({
url: '/search/',
type: 'GET',
data: {
filters : dynamic
},
dataType: 'json',
success : function(json) {
console.log(json); // log the returned json to the console
console.log("success"); // another sanity check
},
// handle a non-successful response
error : function(xhr,errmsg,err) {
console.log(xhr.status + ": " + xhr.responseText); // provide a bit more info about the error to the console
}
});
request.GET (или POST) в настоящее время остается пустым, даже если я добавлю токен CSRF и сделаю его запросом POST.
Я столкнулся с вопросом о том, что использование request.body решает проблему, но даже это было неудачей.