1
저는 Python을 처음 접했습니다. 작은 상점을 개발하여 TG2를 사용해보기로했습니다. 지금까지 나는 그것을 사랑하고 있었지만 코딩 퍼레이드가 여전히 Java에 매우 흡사하다는 것을 짐작하고 있습니다. 예를 들어, CartController의 add to cart
메소드와 같습니다.장바구니 항목 관리 in Python Turbogears 2.0
def add(self, **kw):
pid=kw['pid']
product = model.Product.by_id(pid)
cart = self.get_cart()
# check if that product is already on the cart
isInCart = False
for item in cart.items:
if item.product == product:
# if it is, increment quantity
cart.items.remove(item)
isInCart = True
item.quantity += 1
cart.items.append(item)
break
if not isInCart:
item = model.CartItem(cart, product, 1, product.normalPrice)
cart.items.append(item)
DBSession.add(item)
DBSession.flush()
# updating values for fast retrieval showing
# how many items are in the cart
self.update_session(cart)
return u'Item added to cart, %d items in session' % session['cartitems']
이것은 확실히 최선의 방법은 아니지만 지금까지 예상대로 작동합니다. 자바에서는 Item 객체를 업데이트해야하지만 목록에서 제거하고 다시 업데이트해야합니다.
dbsession 마크가되도록 더러운 개체로 결코하지 않습니다없는 것처럼 내가 항목의 수량이 업데이트되지 않습니다하지 않으면 새로운 수량을 저장합니다. 나의 첫번째 시도는 목록에서 그것을 제거하지 않고 있었다. – Juparave
잊어 버린, 나쁜 새로 고침, 그것은 업데이 트 얻을, 감사합니다. 코드에서 해당 부분 제거. – Juparave
모델을 설정하는 방법에 대해 추측하고 있습니다. '1'이 초기 수량이라고 가정하고 pid로 제품을 검색하면 pid 멤버가 있습니다 ('id'또는 다른 것이지만 동일한 아이디어를 사용하고있을 수 있습니다). '장바구니에서 제품 항목 검색'을 장바구니의 방법으로 통합하고 존재하지 않으면 수량 0의 항목을 반환하도록 할 수 있지만 그 이후로는 더 나은 느낌을 갖습니다. 그것은 당신의 코드베이스입니다. – retracile