Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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
Python django ModelMultipleChiceField出现“SQL变量太多”错误_Python_Django_Sqlite - Fatal编程技术网

Python django ModelMultipleChiceField出现“SQL变量太多”错误

Python django ModelMultipleChiceField出现“SQL变量太多”错误,python,django,sqlite,Python,Django,Sqlite,我有一个带有modelmultipechoicefield的表单,当用户在选择小部件中选择1000多个条目并发布表单时,我使用SQLite得到了“DatabaseError:太多SQL变量” 问题似乎在于modelmultipechoicefield的clean方法,该方法仅通过IN-SQL子句从数据库中选择对象,例如,从id为1,2,3的项目中选择*。当in参数中的数字数增加到1000以上时,就会出现过多的SQL变量 我使用的是Django 1.5.dev17922的最新版本,尽管我认为这与此

我有一个带有modelmultipechoicefield的表单,当用户在选择小部件中选择1000多个条目并发布表单时,我使用SQLite得到了“DatabaseError:太多SQL变量”

问题似乎在于modelmultipechoicefield的clean方法,该方法仅通过IN-SQL子句从数据库中选择对象,例如,从id为1,2,3的项目中选择*。当in参数中的数字数增加到1000以上时,就会出现过多的SQL变量

我使用的是Django 1.5.dev17922的最新版本,尽管我认为这与此无关,因为即使在较旧的版本中也会出现类似的问题

我一直通过自定义临时模型来解决这个问题,这些模型用于连接更复杂的查询。但在我看来,要么已经有了一个系统的解决方案来解决我所缺少的这个问题,我希望有人能向我指出,要么至少有必要这样做——你如何处理类似的情况在这种情况下,我可以开始考虑如何提出一些一般性的建议,这些建议以后可以纳入Django

谢谢你的建议和帮助


编辑:我向django用户ML发布了相同的问题,并且进行了相当富有成效的讨论

也许,重写clean将巨大的列表分割成小块,提出几个请求,然后将数据重新组合在一起?它不会被正确地分类,但我认为它对于清洁的目的并不重要。另外,我认为这是一个bug,因此建议为Django创建一个票证。@ilvar是的,谢谢,这是一个好主意,但问题是,为了保留clean方法产生的所有其他功能,clean方法必须返回一个QuerySet。如果按照您的建议将其实现为一系列较小的数据块,这是不可能的,因为我认为QuerySet应该基于数据库表,以便代码联接、聚合等的其他部分可以正确使用它。。。。你的方法肯定可以解决这个问题,尽管我正在寻找一个系统的解决方案。