如何在沒有外鍵的情況下建立關係?定義沒有外鍵的關係
@declared_attr
def custom_stuff(cls):
joinstr = 'foreign(Custom.name) == "{name}"'.format(name=cls.__name__)
return db.relationship('Custom', primaryjoin=joinstr)
這就提出了一個錯誤:
ArgumentError: Could not locate any simple equality expressions involving locally mapped foreign key columns for primary join condition
這工作,但我認爲這是一個非常醜陋的黑客。
@declared_attr
def custom_stuff(cls):
joinstr = 'or_(
and_(foreign(Custom.name) == MyTable.title,
foreign(Custom.name) != MyTable.title),
foreign(Custom.name) == "{name}")'.format(name=cls.__name__)
return db.relationship('Custom', primaryjoin=joinstr)
有沒有更好的方法來做到這一點?
編輯:額外的屬性需要被添加爲@declared_attr
並有權使用的關係,因爲我們的串行上是這麼寫它declarred ATTRS工作。
這樣做與@hybrid_property
或其他工作,但然後我們的json序列化程序將打破。讓它工作似乎比定義關係更難。
這不提供問題的答案。 – SaeX