Я пытаюсь разобраться, как добавить контекстно-зависимую функцию (например, def get_user_full_name ()), которая будет запускаться из спецификаций по умолчанию и onupdate для столбца.Я пытаюсь установить составное поле, которое объединяет имена и фамилии в одно полное имя, чтобы избежать необходимости постоянно объединять два поля во всех запросах.
Я использую декларативный подход.Это пример похожей модели:
class SomeMembers(Base):
__tablename__ = 'some_members'
__table_args__ = {'mysql_engine':'InnoDB'}
SomeGroup = Column(Unicode(50), primary_key=True)
UserID = Column(Unicode(50), primary_key=True)
FullName = Column(Unicode(255), default=get_user_full_name, onupdate=get_user_full_name, index=True)
FirstName = Column(Unicode(255), index=True)
LastName = Column(Unicode(255), index=True)
UserName = Column(Unicode(255))
Это написанная мной функция, которая сообщает в трассировке стека, что ни ключи FirstName, ни LastName не действительны:
def get_user_full_name(context):
return " ".join((context.compiled_parameters[0]['FirstName'],context.compiled_parameters[0]['LastName']))
Мне не ясно, как я могу сослаться на две колонки (FirstName и LastName) существующих данных, чтобы создать составное значение для хранения для удобства поиска.Например, если у меня был пользователь по имени Джон Доу, метод get_user_full_name должен принимать «Джон» и «Доу» и возвращать полное имя «Джон Доу».
В документации это относится к context.current_parameters, но в моем случае его не существует.Я подозреваю, что это потому, что мы используем декларативный подход.Если бы это сработало, моя функция get_user_full_name выглядела бы так:
def get_user_full_name(context):
return " ".join((context.current_parameters['FirstName'],context.current_parameters['LastName']))
Я знаю, что это, вероятно, тривиально, но я не могу взломать код, где хранится эта информация и как получить к ней динамический доступ.1016 *
Небольшое понимание будет высоко ценится.Я также открыт для более элегантного подхода.
Заранее спасибо ...
Приветствия,
Пол