首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:将QuerySet限制为用户输入(复选框)

Django:将QuerySet限制为用户输入(复选框)
EN

Stack Overflow用户
提问于 2013-05-06 18:45:52
回答 2查看 615关注 0票数 1

我的问题类似于Django Advanced Filtering,但我需要另一种方法:

摘要:

  • 表:制造商、用品
  • 制造商有多种供应(“供应”表中有1或0)

我有一个带有多个(20+复选框)的HTML,它应该限制使用AND查询的查询集(所以是标准的)。HTML复选框名称与MySQL字段名相等。我的桌子是这样的:

代码语言:javascript
复制
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)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-08 17:39:43

我想知道这里的数据模型是否不能进行一些调整?您可能希望有一个有20行的供应表和一个连接它们的中间表(即ManytoMany( supply )或类似的东西)。然后您就可以有一个多选择字段,而不是20个复选框(除非您出于其他原因确实需要它们)。

如果您需要添加另一个供应,它只是添加另一个行,而不是模式迁移。

票数 1
EN

Stack Overflow用户

发布于 2013-05-06 21:11:19

代码语言:javascript
复制
supplies = Supply.objects.filter( supply1 = 1 )

如果你想再次过滤:

代码语言:javascript
复制
supplies = supplies.filter(supply2 = 1) 

filter()方法返回一个QuerySet,因此您可以根据需要链接多少个filter()调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16405137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档