我的问题类似于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)。