sqlalchemy mixin, иностранный ключ и отношение - PullRequest
5 голосов
/ 08 февраля 2012

У меня проблемы с созданием простого миксина, который я планирую использовать на куче декларативных классов sqlalchemy.Основная идея заключается в том, что я хочу, чтобы метка времени создания / изменения и пользователь для создания / изменения хранились в нескольких таблицах.Миксин находится в своем собственном файле (global_mixins.py), и класс импортируется в каждый файл модели, для которого нужен миксин.Когда я запускаю импорт данных, я получаю сообщение об ошибке под кодом.

class TimeUserMixin(object):
    create_time = Column(DateTime,default=datetime.datetime.now,nullable=False)
    modify_time = Column(DateTime,default=datetime.datetime.now,
                    onupdate=datetime.datetime.now,nullable=False)

    @declared_attr
    def create_user_id(cls):
        return Column(Integer,ForeignKey('tg_user.user_id'),
                      default=cls.get_user_id,nullable=False)

    @declared_attr
    def modify_user_id(cls):
        return Column(Integer,ForeignKey('tg_user.user_id'),
                      default=cls.get_user_id,onupdate=cls.get_user_id,nullable=False)

    @declared_attr
    def create_user(cls):
        return relation('User',primaryjoin='%s.create_user_id == User.user_id'%cls.__name__)

    @declared_attr
    def modify_user(cls):
        return relation('User',primaryjoin='%s.modify_user_id == User.user_id'%cls.__name__)

    @classmethod
    def get_user_id(cls):
        #will eventually return user id if logged in or a generic system user.
        return 1

Error(DETAIL:  Key (create_user_id)=(1) is not present in table "tg_user".)

1 Ответ

3 голосов
/ 08 февраля 2012

Это был вопрос порядка операций. Я не читал вывод внимательно. В основном я пытался назначить пользователя, прежде чем какие-либо пользователи были созданы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...