저는 GAE의 데이터 저장소에서 유익한 엔티티를 만드는 가장 효율적인 방법을 결정하려고합니다. 이 엔티티에 대해 투표 할 컨트롤이나 이미 투표 한 것을 나타내는 아이콘을 사용자에게 보여주고 싶습니다. 즉, "사용자가이 엔티티에 투표 했습니까?"라고 묻습니다. 사용자가 투표 할 수있는 질문 엔티티가 있다고 가정 해 보겠습니다. 다음은 내가하고 싶은 생각입니다.GAE의 투표 모델링
- 내 질문 엔티티에 대한 질의. 이 질문에는 이미 미리 정렬 된 순위가 있습니다.
- Question 엔터티의 하위 인 관계 인덱스 엔터티를 사용하십시오. 내 사용자가이 관계 색인 엔티티의 구성원 인 # 1과 동일한 필터를 사용하여 모든 질문을 쿼리합니다.
- 발견 된 각 집합 구성원에 대해 hasVoted 속성을 true로 설정하여 # 2에 # 1의 결과를 병합합니다.
이것은 내가 생각할 수있는 가장 깨끗한 방법이지만 여전히 두 가지 쿼리가 필요합니다. 너무 많은 데이터 중복을 초래할 수 있으므로 각 사용자가 소유 할 중복 Question 엔터티를 만들지 않았습니다. 이 솔루션은 투표와 질문 사이의 m2m 관계를 효과적으로 결합시키는 것을 처리하는 좋은 방법입니까 아니면 너무 관계 적으로 생각하고 있습니까?
만약 voted_on = []이 아닌 경우'coted_on :'이 True이면'voted_on이 None :'으로'voted_on :'을 대체 할 것입니다. –
좋은 지적 블라디미르; 코드를 수정했습니다 - 감사합니다! –
@ David- 사용자가 투표 한 질문의 키를 포함하는 user_votes라는 사용자에 대해'db.ListProperty (db.Key) '를 만드는 것이 더 간단하지 않습니까? – Yarin