0
所以我想讓用戶添加一個項目和一個任意的類別。現在我使用if語句來確保已經創建了類別,而不是再次添加它。有沒有更好的方法來使用SQLAlchemy關係,以便我可以跳過一些我必須編寫的邏輯來確保類別是唯一的?項目和類別數據庫的關係
下面是所用的模型的我:
class Category(Base):
__tablename__ = 'category'
id = Column(Integer, primary_key=True)
name = Column(String(250), nullable=False)
class Item(Base):
__tablename__ = 'item'
id = Column(Integer, primary_key=True)
name = Column(String(250), nullable=False)
description = Column(String)
category_id = Column(Integer, ForeignKey('category.id'))
category = relationship(Category)
date_created = Column(DateTime)
date_updated = Column(DateTime)
user_id = Column(Integer, ForeignKey('user.id'))
user = relationship(User)
這裏是我將如何編輯項目的例子:
if new_category_name != category.name:
if db_session.query(Category).\
filter_by(name=new_category_name).count() == 0:
new_category = Category(name=new_category_name)
else:
new_category = db_session.query(Category)\
.filter_by(name=new_category_name).one()
is_last_of_category = db_session.query(Item)\
.filter_by(category_id=item.category_id).count() == 1
if is_last_of_category:
db_session.delete(category)
item.category = new_category
db_session.commit()
任何其他建議你願意讓我很高興聽至。
所以用這個我能不能擺脫我檢查了一個新的類別? – nanomosfet
是的,但你應該嘗試一下,因爲如果有人試圖創建一個重複的數據,你應該能夠安全地處理它,它應該拋出和異常。 –
如果我刪除恰好是類別最後一個的項目,它是否也會自動刪除該類別?'db_session.delete(user_object)' – nanomosfet