2010-05-20 6 views
2

항목 목록이있는 장바구니 클래스에 python을 사용하고 있습니다. 고객이 항목을 편집하려면 AJAX 메서드를 호출하여 항목을 조작 할 수 있도록 JavaScript 프런트 엔드를 어떤 방식으로 전달해야합니다.참조 또는 색인을 사용하지 않고 목록 안의 개체 참조

기본적으로 인덱스가 아닌 특정 항목을 가리키는 간단한 방법이 필요하며 개체 자체에 대한 참조가 아닙니다.

식별자가 프론트 엔드에 의해 "보유"된 상태에서 목록의 다른 항목이 추가되거나 제거 될 수 있기 때문에 색인을 사용할 수 없습니다. 인덱스를 앞으로 전달하면 항목이 목록에서 삭제 된 경우 해당 인덱스는 올바른 객체를 가리 키지 않습니다.

한 가지 해결책은 UUID를 사용하는 것으로 보이지만 매우 작은 목록의 경우 특히 그렇습니다. 가장 간단한 방법은 무엇입니까?

+0

왜 상품에 대한 참조가 아니십니까? 아마도 아이템은 Quantity, 실제 아이템의 ID 등과 같은 물건을 가진 ShoppingCartItem이어야합니다. – Donnie

+0

문제는 제가 그 아이템을 js로 전달할 수 없다는 것입니다. 저 슨 문자열에 덤프 할 방법이 없습니다. – colinmarc

답변

4

목록을 사용하는 대신 사전을 사용하지 않고 작은 정수를 키로 사용하는 것이 어떻습니까? 사전에 항목을 추가하거나 제거해도 사전에 색인이 변경되지 않습니다. 사전에 하나의 값을 유지하여 다음으로 할당 된 색인이 무엇인지 알 수 있습니다.

+0

키는 어디에서 왔습니까? – FogleBird

+0

@FogleBird : 내 대답을 편집하여 내 질문에 대답했다고 생각합니다. 당신의 DICT를 초기화 할 때 할당 할 다음 번호를 담고있는 특별한 요소를 만든다. –

+0

사전을 사용하는 경우 키를 UUID로 사용할 수도 있습니다. 그런 다음 카운터 변수를 유지할 필요가 없습니다. 물론 열쇠가 더 크지 만 누가 신경 써야합니까? 더 간단합니다. – FogleBird

2

UUID는이 용도에 적합합니다. 왜 그걸하고 싶지 않아?

항목에 어떤 종류의 product_id가 있습니까? 장바구니에 동일한 product_id 중 둘 이상이 있거나 수량을 저장합니까? 내가 얻는 것은 cart_id가 장바구니에있는 고유 한 것이면 바로 사용할 수 있습니다.