Django 汎用リスト ビューがあります。そのため、さまざまなリクエスト パラメータ (リスト フィルタ、ソート) を調べることから始め、リクエスト パラメータに基づいて queryset.filter() メソッドを何度も適用します (またはまったく適用しません)。
次に、いくつかの集計を行いますが、合計が正しく表示されません。クエリを見ると、クエリにさまざまなテーブルを複数回追加しているようです。
したがって、クエリの FROM 部分のスニペットは次のようになります。
INNER JOIN `sequencing_sample` ON (`sequencing_samplesubprojectstats`.`sample_id` = `sequencing_sample`.`id`)
LEFT OUTER JOIN `sequencing_library` ON (`sequencing_sample`.`id` = `sequencing_library`.`sample_id`)
LEFT OUTER JOIN `sequencing_loadedwith` ON (`sequencing_library`.`id` = `sequencing_loadedwith`.`library_id`)
LEFT OUTER JOIN `sequencing_passfail` ON (`sequencing_loadedwith`.`passfail_id` = `sequencing_passfail`.`id`)
LEFT OUTER JOIN `sequencing_passfail` T6 ON (`sequencing_library`.`passfail_id` = T6.`id`)
LEFT OUTER JOIN `sequencing_organism` ON (`sequencing_sample`.`organism_id` = `sequencing_organism`.`id`)
LEFT OUTER JOIN `sequencing_subproject` ON (`sequencing_samplesubprojectstats`.`subproject_id` = `sequencing_subproject`.`id`)
LEFT OUTER JOIN `sequencing_library` T9 ON (`sequencing_sample`.`id` = T9.`sample_id`)
passfail テーブルはルックアップ テーブルであり、複製する必要がありますが、ライブラリ テーブルはスキーマの中心であり、T9 として複製しないでください。
ORM が重複したテーブルを追加する原因についての適切なドキュメントはありますか? ビューではさまざまなことが起こっています (オプションで適用されるさまざまなフィルター、クエリセットの注釈)。
生の SQL を使用することもできますが、Django オブジェクトを使用することをお勧めします。これらを使用すると、並べ替えとページ付けがはるかに簡単になるからです。
API のどの部分がライブラリ テーブルを 2 回追加する原因になっているのかを知りたいので、それを回避できる可能性があります (可能であれば)。