1

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 回追加する原因になっているのかを知りたいので、それを回避できる可能性があります (可能であれば)。

4

0 に答える 0