私の質問はDjango Advanced Filteringに似ていますが、別のアプローチが必要です:
概要:
- 表: メーカー、消耗品
- メーカーには複数の供給品があります (「供給」テーブルの 1 または 0)
複数の(20以上のチェックボックス)を持つHTMLフォームがあり、クエリセットをAND
クエリで制限する必要があります(非常に標準的です)。HTML チェックボックス名は、MySQL フィールド名と同じです。私のテーブルは次のようになります。
mysql> explain supply;
+----------------------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| manufacturer_id | int(11) | NO | MUL | NULL | |
| supply1 | tinyint(1) | NO | | NULL | |
| supply2 | tinyint(1) | NO | | NULL | |
| supply3 | tinyint(1) | NO | | NULL | |
| [...] | tinyint(1) | NO | | NULL | |
| supply20 | tinyint(1) | NO | | NULL | |
疑似 SQL では、次のことを行います。
- ユーザーが選択したチェックボックス supply2 および supply14:
SELECT * FROM supply WHERE supply2 = 1 AND supply14 = 1;
- ユーザーが選択したチェックボックス supply1、supply9、supply18:
SELECT * FROM supply WHERE supply1 = 1 AND supply9 = 1 AND supply18 = 1;
kwargs を使用した QuerySet が必要だと確信していますが、自分のニーズに合わせてビューを構築することはできません (まだ Django を学んでいます)。