私はLocationクラスを持っています。場所には、住所でもあるデフォルトの「請求書住所」を設定することができます。私が作業しているフィールドはCustomerLocationクラスのbill_to_id
とbill_to
です。私は完全性のために親クラスを含んでいます。ある場所を別の場所の請求先として設定するにはどうすればよいですか?関係は1対1でなければなりません(場所には請求書が1つしかありません)。逆参照は必要ありません。SQLAlchemy、同じテーブルの1対1の関係
TIA
class Location(DeclarativeBase,TimeUserMixin):
__tablename__ = 'locations'
location_id = Column(Integer,primary_key=True,autoincrement=True)
location_code = Column(Unicode(10))
name = Column(Unicode(100))
address_one = Column(Unicode(100))
address_two = Column(Unicode(100))
address_three = Column(Unicode(100))
city = Column(Unicode(100))
state_id = Column(Integer,ForeignKey('states.state_id'))
state_relate = relation('State')
zip_code = Column(Unicode(100))
phone = Column(Unicode(100))
fax = Column(Unicode(100))
country_id = Column(Integer,ForeignKey('countries.country_id'))
country_relate = relation('Country')
contact = Column(Unicode(100))
location_type = Column('type',Unicode(50))
__mapper_args__ = {'polymorphic_on':location_type}
class CustomerLocation(Location):
__mapper_args__ = {'polymorphic_identity':'customer'}
customer_id = Column(Integer,ForeignKey('customers.customer_id',
use_alter=True,name='fk_customer_id'))
customer = relation('Customer',
backref=backref('locations'),
primaryjoin='Customer.customer_id == CustomerLocation.customer_id')
tbred_ship_code = Column(Unicode(6))
tbred_bill_to = Column(Unicode(6))
ship_method_id = Column(Integer,ForeignKey('ship_methods.ship_method_id'))
ship_method = relation('ShipMethod',primaryjoin='ShipMethod.ship_method_id == CustomerLocation.ship_method_id')
residential = Column(Boolean,default=False,nullable=False)
free_shipping = Column(Boolean,default=False,nullable=False)
collect = Column(Boolean,default=False,nullable=False)
third_party = Column(Boolean,default=False,nullable=False)
shipping_account = Column(Unicode(50))
bill_to_id = Column(Integer,ForeignKey('locations.location_id'))
bill_to = relation('CustomerLocation',remote_side=['locations.location_id'])
私はそれを文字列で処理することはできませんでしたが、あなたの明示的な例の従業員宣言を使用して、動作しました。ありがとうございました! – jheld