0
我需要與自定義getter和setter創建關係。 這將是很好的關係聲明 此外,我需要改變關係的getter即使沒有數據連接定義的setter /吸氣參數(如換無以更復雜的東西)如何通過自定義setter和/或getter增加sqlalchemy關係
這大致就是我需要:
class Address(Base):
#...
#hybrid attributes? custom class instrumentation? I need call this function even if no rows are joined to user or company
def getter(self):
#for each joined row
return {'address': "%s %s" % (self.cilty, self.country), 'maximum' : some_data['maximum']}
#if no row joined
return {'address': None, 'maximum' : some_data['maximum']}
def setter(self, user):
if some_data['only_country'] != user.country:
raise Exception('You can`t live in %s. sorry', (user.country,))
self.country = user.country
class User(Base):
#...
addresses = relationship(Address, some_data = {'maximum': 1, only_country: 'UA'})
class Company(Base):
#...
addresses = relationship(Address, some_data = {'maximum': 7, only_country: 'US'})
現在我想利用這個關係如下
u = db.query(User).filter_by(id=1).one()
# I need data from getter here
print(u.address)
u = User()
# I need setter called here with references to user and some_data defined in relationship definition
u.address = Address()
它是一個一對一的關係(顯然不是,因爲「對於每個加入行」)?你能否詳細說一下「你的關係上有getter/setter」是什麼意思?你將如何使用這樣的getter/setter? –
1.表地址可以一對一使用,也可以一對多關係(不同型號) 2.我更新了發帖,謝謝 – kakabomba
主要思想是Address對象的行爲依賴於一些數據,我想通過這個數據來自關係申報 – kakabomba