Commit ddf6843b authored by Paul Brown's avatar Paul Brown

sqla ajax loader - allow primary key name != attribute names

parent 258ae974
...@@ -3,6 +3,8 @@ from sqlalchemy import or_ ...@@ -3,6 +3,8 @@ from sqlalchemy import or_
from flask_admin._compat import as_unicode, string_types from flask_admin._compat import as_unicode, string_types
from flask_admin.model.ajax import AjaxModelLoader, DEFAULT_PAGE_SIZE from flask_admin.model.ajax import AjaxModelLoader, DEFAULT_PAGE_SIZE
from .tools import get_primary_key, has_multiple_pks
class QueryAjaxModelLoader(AjaxModelLoader): class QueryAjaxModelLoader(AjaxModelLoader):
def __init__(self, name, session, model, **options): def __init__(self, name, session, model, **options):
...@@ -24,11 +26,10 @@ class QueryAjaxModelLoader(AjaxModelLoader): ...@@ -24,11 +26,10 @@ class QueryAjaxModelLoader(AjaxModelLoader):
self._cached_fields = self._process_fields() self._cached_fields = self._process_fields()
primary_keys = model._sa_class_manager.mapper.primary_key if has_multiple_pks(model):
if len(primary_keys) > 1:
raise NotImplementedError('Flask-Admin does not support multi-pk AJAX model loading.') raise NotImplementedError('Flask-Admin does not support multi-pk AJAX model loading.')
self.pk = primary_keys[0].name self.pk = get_primary_key(model)
def _process_fields(self): def _process_fields(self):
remote_fields = [] remote_fields = []
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment