여기 조인과 페이지 매김에 문제가 있습니다. 나는 3 개 모델이 있습니다효율적인 장황한 페이지 매기기
- 패드
- 태그
- TagRelation을
나는 테 ManyToMany 필드의 속성을 통해 와 패드 및 태그 (betweent ManyToMany 관계를 관리하기 위해 태그 관계를 사용). 나는 패드 및 태그 테이블에 가입 할 때 내가 그것을 페이지 당 계산 분명히 잘못된 항목의 결과에서 매기기() 객체를 생성 할 때 지금은 ... 지금 나에게
pad.name tag.name etc
---------------------------
pad1 tag1 ...
pad1 tag2 ...
pad2 tag3 ...
를 같은 것을 제공합니다. 나는 ...
[{name:'pad1', tags:['tag1', 'tag2']}, {name:'pad2' ....]
을 모든 결과를 축복하는 반복이 같은 사전을 생성해야 ... 올바른 페이지를 얻을이에 매기기를 사용합니다.
이 문제에 대한 최선의 방법은 무엇입니까? 나는 그것의 태그를 얻으려면 현재 페이지에서 각 패드 개체에 대한 DB 쿼리를 할 수 있지만 조만간 서버를 죽일 것이라고 생각합니다 (performant 있어야합니다).
결과의 내용도 꽤 길 수 있고 전체 세트를 반복하면 많은 시스템 메모리가 필요합니다 (또는 나에게 계몽 할 수 있습니다 :)).
이 태그는 항목별로 필터링 할 수 없습니다. 거대한 조인과 수동 (코드 내) 후 처리를 둘러싼 어떠한 방법도없는 것처럼 보입니다. 당신이 태그에 의해 필터링하려면 –
아,하지만 당신이 안전하게 할 수 있습니다 (당신은 단지 하나의 특정 태그를 이야기하고 가정) 다시 TagRelation 페이지를 매기는, 그리고 해당 : TagRelation.objects.filter (태그 = someTagObject)로 당신의 페이지 매김 객체는 각 패드에 대해 정확히 하나의 Tagrel을 제공해야합니다 (동일한 태그를 여러 번 패드에 태그 할 수 없다고 가정 할 때). –