Итак, я немного глубже изучил исходный код.Большое спасибо Gittert за помощь.
Обратите внимание, что в моем решении я хочу ограничить функцию просмотра и редактирования для одного конкретного столбца, который также является внешним ключом из другой таблицы.
Таким образом, чтобы ограничить функции просмотра, я переписал get_query () и get_count_query (), как это было опубликовано в предыдущих постах:
## overwrite
def get_query(self):
self._auto_fush_deactivate()
return super(CustomView,
self).get_query().filter(User.id== 1)
def get_count_query(self):
return self.session.query(func.count('*')).filter(User.id == 1)
, и чтобы манипулировать этим, пользователь может добавлять только новые данные, используясвой собственный внешний ключ в таблице я дополнительно переписал функцию on_model_create ().
def on_model_change(self, form, model, is_created):
### deactivate auto_flush temp. to not receive data integrity error
self._auto_fush_deactivate()
### create model from table user
overwrite_model = self.session.query(User).filter(User.id== 1).first()
### overwrite the user id with model from User-Model
model.user_id = overwrite_model
self._auto_fush_activate()
def _auto_fush_deactivate(self):
self.session.autoflush = False
def _auto_fush_activate(self):
self.session.autoflush = True