Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在django模型实例中将列表作为输入过滤器写入mysql表_Django_Django Views - Fatal编程技术网

如何在django模型实例中将列表作为输入过滤器写入mysql表

如何在django模型实例中将列表作为输入过滤器写入mysql表,django,django-views,Django,Django Views,我的Django模型中有以下字段 class cube(models.Model): pid = models.IntegerField() lc = models.CharField(max_length=100) sid = models.IntegerField() st = models.IntegerField() wid = models.IntegerField() wt = models.IntegerField() 我有以下来自

我的Django模型中有以下字段

class cube(models.Model):
    pid = models.IntegerField()
    lc = models.CharField(max_length=100)
    sid = models.IntegerField()
    st = models.IntegerField()
    wid = models.IntegerField()
    wt = models.IntegerField()
我有以下来自客户的输入集

输入设置1对象-

[{"sid":1,"st":7},{"sid":7,"st":5},{"sid":5,"st":9},{"sid":2,"st":7}]
输入设置2对象-

[{"wid":3,"wt":5},{"wid":1,"wt":7},{"wid":4,"wt":8},{"wid":2,"wt":5},{"wid":5,"wt":5}]
以下是我的要求,用mysql表示法:

select pid,lc from cube
where (((sid=1) AND (st>=7)) AND ((sid=7) AND (sid>=5)) AND ((sid=5) AND 
(st>=9)) AND ((sid=2) AND (st>=7)))
AND (((wid=3) AND (wt>=5)) AND ((wid=1) AND (wt>=7)) AND ((wid=4) AND 
(wt>=8)) AND ((wid=2) AND (wt>=5)) AND ((wid=5) AND (wt>=5)))
输入{sid,st}和{wid,wt}集每个最多可包含10项- 与{sid,st}一样,每个输入最多可以有10个,与{wid,wt}相同

如何用django编写这个sql符号

在我的视图中,我希望使用如下列表中的输入参数,以便它对于输入集是通用的-

input_set1=[{1,7},{7,5},{5,9},{2,7}]
input_set2=[{3,5},{1,7},{4,8},{2,5},{5,5}]

fieldsReq=['pid','lc']
queryset=cube.objects.values_list(fieldsReq).filter(reduce(operator.and_, (Q(sid__contains=x) for x in ['3', '5', '6']),(Q(rt__contains=x) for x in ['4', '8', '3']))) #Am not sure how to write the condition here
我想将输入_set1映射到{sid,st} 并将_set2输入到{wid,wt},但发现书写困难


如何用Django表示法从mysql表中获取字段呢?

下面是我对
sid
的尝试,它也应该应用于
wid

from django.db.models import Q

# original input
input = [{"sid":1,"st":7},{"sid":7,"st":5},{"sid":5,"st":9},{"sid":2,"st":7}]
# a list of Q objects
queries = [Q(sid=i['sid'], st__gte=i['st']) for i in input]
# 'AND' all conditions
sid_query = reduce(lambda x, y: x & y, queries)

fieldsReq=['pid','lc']
queryset=cube.objects.values_list(fieldsReq).filter(sid_query)

非常感谢@ShangWang!你好,王尚,我如何编写或操作此要求。。从多维数据集中选择pid、lc,其中((sid=1)和(st>=7))或((sid=3)和(st>=5))或(…)查询=[Q(sid=i['sid'])Q(srt_ugte=i['srt'])对于输入中的i]这是正确的写入或操作方式,但对于sid和st集的组合而言?只需将我的答案中的
&
更改为
语句中的