У меня есть определенные клиенты и адреса.
Клиент может содержать много адресов.
Клиент будет иметь адрес доставки по умолчанию.
У клиента будет адрес счета по умолчанию.
customer.locations должен дать мне список всех адресов для клиента.
customer.bill_to / ship_to должен дать мне один адрес.
class Customer(DeclarativeBase):
__tablename__ = 'customers'
customer_id = Column(Integer, primary_key=True,autoincrement=True)
customer_code = Column(Unicode(15),unique=True)
customer_name = Column(Unicode(100))
abc_id = Column(Integer,ForeignKey('customer_abc.abc_id'))
abc = relation(CustomerABC,backref=backref('customers',order_by=customer_code))
status_id = Column(Integer,ForeignKey('status.status_id'))
status = relation(Status,backref=backref('customers',order_by=customer_code))
discount = Column(Float)
website = Column(Unicode(100))
bill_to_id = Column(Integer, ForeignKey('addresses.address_id'))
ship_to_id = Column(Integer, ForeignKey('addresses.address_id'))
bill_to = relation('CustomerAddress',
primaryjoin='CustomerAddress.address_id==Customer.bill_to_id')
ship_to = relation('CustomerAddress',
primaryjoin='CustomerAddress.address_id==Customer.bill_to_id')
def __init__(self,code,name,status='A',abc='N'):
self.customer_code = code
self.customer_name = name
status = DBSession.query(Status).filter(Status.status_code==status).first()
if status:
self.status = status
abc = DBSession.query(CustomerABC).filter(CustomerABC.abc==abc).first()
if abc:
self.abc = abc
class CustomerAddress(DeclarativeBase):
__tablename__ = 'addresses'
address_id = Column(Integer,primary_key=True,autoincrement=True)
address_code = Column(Unicode(10))
customer_id = Column(Integer,ForeignKey('customers.customer_id'))
customer = relation('Customer',
backref=backref('locations'),
primaryjoin='Customer.customer_id == CustomerAddress.customer_id')
name = Column(Unicode(100))
address_one = Column(Unicode(100))
address_two = Column(Unicode(100))
address_three = Column(Unicode(100))
city = Column(Unicode(100))
state = Column(Unicode(100))
zip_code = Column(Unicode(100))
phone = Column(Unicode(100))
fax = Column(Unicode(100))
country = Column(Unicode(2))
contact = Column(Unicode(100))
@property
def formatted_address(self):
address = "%s<br/>%s<br/>" %(self.name,self.address_one)
if self.address_two:
address += "%s<br/>" %self.address_two
if self.address_three:
address += "%s<br/>" %self.address_three
address += "%s, %s %s" %(self.city,self.state,self.zip_code)
return address
Как бы то ни было ...
sqlalchemy.exc.CircularDependencyError: Circular dependency detected:
Я просто пытаюсь изучить все тонкости sqlalchemy. Эта страница была тем, с чего я начал и пытался расширить. ТИА