我的问题类似于Django Advanced Filtering,但我需要另一种方法:
摘要:
我有一个带有多个(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中,我想:
SELECT * FROM supply WHERE supply2 = 1 AND supply14 = 1;SELECT * FROM supply WHERE supply1 = 1 AND supply9 = 1 AND supply18 = 1;我很确定我需要一些带有kwargs的QuerySet,但是我无法为我的需求构建视图(还在学习Django)。
发布于 2013-05-08 17:39:43
我想知道这里的数据模型是否不能进行一些调整?您可能希望有一个有20行的供应表和一个连接它们的中间表(即ManytoMany( supply )或类似的东西)。然后您就可以有一个多选择字段,而不是20个复选框(除非您出于其他原因确实需要它们)。
如果您需要添加另一个供应,它只是添加另一个行,而不是模式迁移。
发布于 2013-05-06 21:11:19
supplies = Supply.objects.filter( supply1 = 1 )如果你想再次过滤:
supplies = supplies.filter(supply2 = 1) filter()方法返回一个QuerySet,因此您可以根据需要链接多少个filter()调用。
https://stackoverflow.com/questions/16405137
复制相似问题