Простое решение:
import django.apps
django.apps.apps.get_models()
До использования Django 1.7 вместо этого используйте:
from django.db import models
models.get_models(include_auto_created=True)
Параметр include_auto_created
гарантирует, что через таблицы, неявно созданные с помощью ManyToManyField
s также будут получены.
Чтобы ответить на вопрос. Это похоже на ошибку в кендо. Установка для pageSize значения 0 (ярлык для «всего») после того, как источник данных уже был привязан, всегда приведет к тому, что у сетки будут проблемы с любыми пользовательскими фильтрами, объявленными внутри шаблона панели инструментов.
Если быть точным, если у вас есть собственный фильтр, определенный внутри шаблона панели инструментов:
@(Html.Kendo().TextBox().Name("Filter").Deferred())
Вы подключаете его через определение источника данных в сетке, например:
.DataSource(ds =>
ds.Ajax()
.PageSize(defaultPageSize)
.Read(a => a.Action(actionName, controllerName, new
{
param = Model.param
}).Data("getFilterParameters")))
[1110 ] в javaScript, извлекающем параметры, например:
getFilterParameters: function () {
return this.filterParameters;
},
, заполняющие их методом:
filter: function () {
var grid = $("#Grid").data("kendoGrid");
this.filterParameters = {
param: $("#Filter").val()
};
grid.dataSource.page(1);
}
, к которому подключен простой прослушиватель событий:
$("#Filter").on("keyup", filter);
[1113 ] Затем после программного изменения pageSize на 0 / "all" с помощью:
$("#Grid").data("kendoGrid").dataSource.pageSize(0);
Фильтр начнет всегда возвращать NaN в качестве текущей страницы / пропуска объекта фильтра, переданного на сервер с параметрами запроса (хотя сетка будет отображать числа правильно). Это вызовет исключение «строка не в правильном формате» внутри кода платформы на конечной точке всякий раз, когда вы пытаетесь использовать фильтр. Решение вышеупомянутого состоит в том, чтобы немного изменить метод getFilterParameters:
getFilterParameters: function (e) {
// Workaround for Kendo NaN pager values if pageSize is set to All
if (isNaN(e.page)) e.page = 1;
if (isNaN(e.skip)) e.skip = 0;
//
return this.filterParameters;
}
Это повторно инициализирует страницу и пропускает значения перед отправкой запроса фильтра. Эти значения в любом случае будут повторно заполнены в конечной точке правильными значениями. Не я это заметил, а еще один разработчик, работающий над проектом, кредит ей
.